我有一个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分支。我不确定这是否相关)
这是我想要解决的方案。我一直在我的分支机构上进行新的开发。我原来的主人之前有很多版本。但是,我刚刚收到了修改生产中的东西的请求。我的心理模型是
目标是避免在准备好之前将我的任何新代码投入生产。
如果没有在某处重新克隆中央存储库,那么有一个git工作流吗?理想情况下,我喜欢像我描述的那样“切换到远程分支”,但如果这是无意义的话,那么我可以使用git来帮助我处理这种情况。 (继续开展新工作,但主要是能够在历史上进一步发挥作用)
答案 0 :(得分:2)
您可以创建一个新分支来跟踪这样的远程分支(这里本地分支称为'bugfix'):
git checkout -b bugfix upstream/master
一旦您有一个本地分支跟踪并与所需的远程分支同步,您可以进行更改,然后git commit
和git push
,然后检查您的原始工作分支。
最后,在再次检查您的工作分支后,您将要将您的错误修正更改合并到您的工作分支中,如下所示:
git merge bugfix
或者像这样改变它(改变创造一个更干净的历史,但可以在解决混乱方面做更多的工作):
git rebase -i bugfix
你可以继续把那个分支留在那里(在这种情况下,你可能想把它称为'bugfix'更永久的东西,可能是'上游主人',或'活产品',或者其他什么)。或者您可以删除本地分支,如果您不再需要它,如下所示:
git branch -D bugfix