2011-08-23 50 views
2

我正在進入GIT世界,但它似乎像GIT有一個巨大的劣勢。 因爲您正在提交到您自己的本地存儲庫,並且只有在提交了多份提交內容之後才提交給外部世界,是否會創建多個大合併?GIT是否強制許多大合併?

回答

6

真的,在git中幾乎所有情況下都有合併的方法。不是合併,而是重新綁定本地存儲庫,重新安排歷史記錄。通過使用rebase,規範/源代碼庫永遠不會重新排列,並且很少有任何合併提交,但本地資料庫歷史記錄會重新排列以更貼近主要的repo。

所以:

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

而且所有的提交將是原子,並且原點/主機將不會有任何合併提交。

現在,在極罕見的情況下,重新綁定過程將變得複雜,您會發現自己解決了很多衝突,在這種情況下,您可能需要git rebase --abort並退出rebase過程,然後進行合併相反,但我已經走了幾個月而不需要求助於合併,所以保持歷史線性並不難。

本質上,這是在採取最少的破壞性方法。你在說:「嘿,我所有的提交都是我添加到本地主分支的 - 之後 - 無論其他人投入中央/規範分支是我的責任,所以 - 我將是重新安排我的碼。」通過這種方式,無論進入任何存儲庫的主分支,都被視爲規範FIRST優先,而其他人不必處理合並提交,這些提交會重寫歷史記錄,以便成功推送到主分支。

3

嗯,是的,你可以發現自己處於這種情況,但它是可以避免的。即使你決定你的回購只有幾次(N次)提交後,你仍然可以從其他分支不斷,以便你總是與任何其他人正在做的整合。無論如何,Git還是非常擅長合併。

2

根本不是。 git中的每個提交都是唯一可識別的,而不管它存在哪個回購。因此,合併工作完全按照他們應該的方式進行。 Git對衝突解決方案也提供了非常好的支持,使得合併比其他VCS更好。

0

它主要取決於您決定使用push代碼的頻率以及其他代碼的使用頻率。例如,如果你推動一個小的改變,而其他人提出這個改變,它不會是一個大的合併。但是,如果你在本地無數次的時候才推動,那麼拉可能是一個大合併。

我希望這會有所幫助。