Git:从克隆切换到远程分支

时间:2011-09-29 20:15:24

标签: git github workflow

我有一个git工作流程问题,而且我并不完全了解所有要知道要google的条款。

简短版本:当本地存储库作为远程存储库的克隆启动时,是否可以将本地git目录“切换”到远程存储库中的分支?我是git的新手,所以我仍然想在这里加速术语;如果我说了一些似乎是错误/做出假设的话请告诉我。

长版。

我有一个本地存储库,它是“中央”存储库的克隆。该存储库有几个分支,每个分支都在原始存储库的主分支之前进行了许多修订。

$ git branch
  foo
* master
  universal_imports    

我知道我可以使用git的checkout命令“切换”到我的一个本地分支

$ git checkout foo
$ git checkout universal_imports
etc.

我也有一些遥控器

$ git remote
origin
upstream

upsteam的主分支是我们的真理来源。它是产品,即上述中央存储库。如前所述,我的本地主存储库作为此存储库的克隆启动。 (实际上,我的本地存储库是origin远程的克隆,它是上游主分支的github分支。我不确定这是否相关)

这是我想要解决的方案。我一直在我的分支机构上进行新的开发。我原来的主人之前有很多版本。但是,我刚刚收到了修改生产中的东西的请求。我的心理模型是

  1. 切换我的本地代码,使其与生产代码匹配
  2. 执行修复并提交
  3. 将我的本地代码合并到真实来源分支
  4. 将我的本地代码切换回我的“真实”分支,并继续新功能开发
  5. 目标是避免在准备好之前将我的任何新代码投入生产。

    如果没有在某处重新克隆中央存储库,那么有一个git工作流吗?理想情况下,我喜欢像我描述的那样“切换到远程分支”,但如果这是无意义的话,那么我可以使用git来帮助我处理这种情况。 (继续开展新工作,但主要是能够在历史上进一步发挥作用)

1 个答案:

答案 0 :(得分:2)

您可以创建一个新分支来跟踪这样的远程分支(这里本地分支称为'bugfix'):

git checkout -b bugfix upstream/master

一旦您有一个本地分支跟踪并与所需的远程分支同步,您可以进行更改,然后git commitgit push,然后检查您的原始工作分支。

最后,在再次检查您的工作分支后,您将要将您的错误修正更改合并到您的工作分支中,如下所示:

git merge bugfix

或者像这样改变它(改变创造一个更干净的历史,但可以在解决混乱方面做更多的工作):

git rebase -i bugfix

你可以继续把那个分支留在那里(在这种情况下,你可能想把它称为'bugfix'更永久的东西,可能是'上游主人',或'活产品',或者其他什么)。或者您可以删除本地分支,如果您不再需要它,如下所示:

git branch -D bugfix