在已推送的分支中使用git squash并与协作者一起使用

问题描述 投票:0回答:1

如果以下命令影响团队合作,我在之前的答案中并不清楚:

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

这会产生问题吗?

如果是这样,作为一个拥有大量提交的团队工作的方式是什么,然后以清晰的方式合并?

git push squash multiple-users
1个回答
2
投票

为您创造问题的步骤是这一部分:

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

and I then:

git pull

它可能会产生问题的原因是,如果您在上次推送后修改了代码,那么您的代码可能基于提交历史中不再存在的提交(在交互式rebase期间,您的队友可能已经修改或删除了这些提交)。这不是一个“不可恢复的”问题,但它可能导致混淆,重复提交,错误的合并解决方案等。所以简单的经验法则是 - 不要重写其他人可能用作他们的起点的历史记录工作。

以下是一些其他可能有助于您组织提交而不会遇到git历史问题的想法:

  • 在将工作推送到共享存储库之前,在您自己的分支上运行git rebase -i
  • 或者等到每个人都完成了你的分支,然后在合并到掌握之前对每个人的工作做git rebase -i。这是安全的,因为您知道没有人会对您即将修改的提交做更多的工作。
  • 或者在将它合并到master时将壁架压缩(GitHub(和大多数其他主机)都有一个选项)。
  • 或者不要太担心你的混乱历史,或者只是让你的初始提交更清洁。
  • 或者只在你将使用的分支上工作(例如,feature1-alan)。您可以根据需要多次推送到此分支,也可以根据需要在不同的计算机上进行推送。您也可以随时压缩提交并强制推送此分支 - 只要您没有自己的未合并工作挂在另一台计算机上。你可以将这个分支合并到团队的分支featuremaster,或者在你被压扁之后的任何东西,并对你的提交方式感到满意。
© www.soinside.com 2019 - 2024. All rights reserved.