我应该如何让我的git项目分支与master保持同步?

时间:2011-01-25 16:06:51

标签: git msysgit

假设我的远程master上有project分支和origin分支。工作主要在project分支中完成,但偶尔需要将错误修复进入master,以便可以立即部署。最终,当项目完成时,我希望能够将项目中的所有提交压缩到一个提交中,然后将其合并到master中。

通常使用功能分支(不会推送到origin),我们只需使用master进行变基并按照我们的快乐方式进行更新,但因为project是在origin上它自己的分支,我不知道如何按照我想要的方式保存历史记录(从master提交,然后提交新的project提交,理想情况下没有合并提交)到期关于在远程分支上重写历史的保障措施。目前我们通过删除远程project并使用正确的历史记录重新创建它来做到这一点,但这绝对不是最理想的。

我可以在远程project重写历史记录,因为这只是一个2人的团队,我们理解其含义,并且愿意过于谨慎。但是我该如何实现呢?

4 个答案:

答案 0 :(得分:2)

你可以在git中合并分支

git checkout project

git merge origin/master

只要它们来自同一个祖先,它就会将master中的所有更改合并到项目中。

答案 1 :(得分:1)

git checkout project
git rebase master
git push origin +project:project

现在只是想弄清楚如何在另一台计算机上正确提取更改!

答案 2 :(得分:0)

我倾向于将“项目”中的相应更改变为“主”,以便“主”包含您想要的代码。

然后我会将'master'合并回'project',或者只是跟踪已经应用的patch-id。 (无论哪种方法,都要始终如一!)。就个人而言,我认为将“主人”合并回“项目”从长远来看更为简单。

答案 3 :(得分:0)

关于功能分支,我更喜欢在master上重新定位它们。这对于长时间运行的功能分支尤其有用,这些功能分支在返回master之前可能需要大量开发,而master将并行发展。

重新定位将对您的分支进行更改并将其应用于master,结果将是您的新分支。 master本身将保持不变。

当您的project分支签出时,您可以执行以下操作:

(project) $ git rebase master

或明确地:

(some-branch) $ git rebase master project

注意:重新定位会重写您的分支机构的历史记录!所以要小心。

有关详细信息,请参阅documentation