在已经推送的分支中使用git南瓜,并与colaborators一起使用

时间:2019-03-28 18:51:59

标签: git push squash multiple-users

以前的答案对我来说还不清楚,以下命令是否影响团队合作:

git checkout -b featureX
// add some changes ..
git commit ...
// add some changes ..
git commit ...
// add some changes ..
git commit ...
// add some changes ..
git commit ...
git push ..

and another partner does the following:

git pull origin featureX
// add some changes ..
git commit ...
// add some changes ..
git commit ...
...
git rebase -i featureX ~ 5 featureX
git push origin + featureX

and I then:

git pull
git checkout featureX
git rebase master
// or
git merge master

这会带来问题吗?

如果是这样,作为一个团队,要进行大量提交然后以清晰的方式合并,该怎么做?

1 个答案:

答案 0 :(得分:2)

可能会为您造成问题的步骤是这一部分:

git rebase -i featureX ~ 5 featureX
git push origin + featureX

and I then:

git pull

它可能造成问题的原因是,如果您自上次推送以来就修改了代码,则代码可能基于不再在提交历史记录中的提交(它们可能已被修改或删除)。您的队友在进行互动式变基时)。这不是一个“不可恢复”的问题,但它可能导致混乱,重复的提交,不良的合并分辨率等。因此,简单的经验法则是-不要重写别人可能已将其用作起点的历史记录工作。

还有其他一些想法可以帮助您组织提交,而不会遇到git历史记录问题:

  • 在您的分支之前运行git rebase -i
  • 或等待直到每个人提交到您的分支为止,然后对每个人的工作进行git rebase -i,然后再合并到母版中。这是安全的,因为您知道没人会对要修改的提交做更多的工作。
  • 或在将分支合并到master时压扁分支(GitHub(和大多数其他主机)对此有一个选择)。
  • 或者不必担心您的混乱历史,或者只是致力于使您的初始提交更整洁。
  • 或在只有您将要使用的分支上工作(例如feature1-alan)。您可以根据需要在该分支上进行多次推入/拉出操作,也可以根据需要在其他计算机上进行推拉操作。您也可以压缩提交并在需要时强制推动该分支-只要您没有在另一台计算机上闲逛的未合并工作即可。您可以将此分支合并到团队的featuremaster分支中,也可以将其合并后对提交的外观感到满意。