GIT不强迫许多大合并吗?

时间:2011-08-23 15:17:47

标签: git

我正在进入GIT世界,但似乎GIT有一个巨大的劣势。 因为您要提交到您自己的本地存储库,并且只有在您提交给外部世界的几次提交之后,它是否会创建许多大型合并?

4 个答案:

答案 0 :(得分:6)

真的,在git中几乎所有情况下都有一种方法可以合并。您可以重新设置本地存储库,重新安排历史记录,而不是合并。通过使用rebase,规范/原始存储库永远不会重新排列,并且很少有任何合并提交,但重新安排本地存储库历史记录以更接近地匹配主存储库。

所以:

git fetch
git rebase origin/master
// resolve any conflicts (if there are any) by altering your own commits
git rebase --continue
git push

所有提交都是原子的,而origin / master将永远不会有任何合并提交。

现在,在极少数情况下,变基过程会变得复杂,你会发现自己解决了很多冲突,在这种情况下你可能想要git rebase --abort并退出rebase流程然后去相反,但是我已经过了几个月而不需要求助于合并,所以保持历史线性并不太难。

基本上,这是采取最具破坏性的方法。你说的是“嘿,我的所有提交都是我添加到我当地主分支机构的提交 - 以后 - 无论其他人放在中心/规范分支机构是我的责任,所以 - 我将是重新安排我的码。”通过这种方式,无论进入任何存储库的主分支,被认为是规范的FIRST优先,而其他人不必处理为成功推送到主分支的任何内容重写历史的合并提交。

答案 1 :(得分:3)

是的,您可能会发现自己处于这种状况,但这是可以避免的。即使您决定仅在几次(N次)提交后推送您的回购,您仍然可以从其他分支机构,以便您始终与其他任何人整合是做。无论如何,Git非常擅长合并。

答案 2 :(得分:2)

完全没有。 git中的每个提交都是唯一可识别的,无论它存在于哪个repo中。因此,合并工作完全正常。 Git还对冲突解决方案提供了非常好的支持,使其在合并时比其他VCS更好。

答案 3 :(得分:0)

这主要取决于您决定push代码的频率以及其他人pull代码的频率。例如,如果您推送一个小的更改而其他人拉动该更改,则它不会是一个大的合并。但是,如果你在本地多次提交之前没有推送,那么拉动可能是一个很大的合并。

我希望这会有所帮助。