假設有100名開發人員在同一個項目中工作。推動主源時,git是否強制本地更新/合併?
當每個開發人員將他們的變更集推送到中央倉庫(原始主數據倉庫)時,他們是否被迫在本地進行抽取/合併以獲取所有更新?
或者只要他們都在不同的文件上工作,並且不需要合併,他們將不會被迫這樣做?
假設有100名開發人員在同一個項目中工作。推動主源時,git是否強制本地更新/合併?
當每個開發人員將他們的變更集推送到中央倉庫(原始主數據倉庫)時,他們是否被迫在本地進行抽取/合併以獲取所有更新?
或者只要他們都在不同的文件上工作,並且不需要合併,他們將不會被迫這樣做?
推不自動拉。如果許多開發商都在一個更新的分支工作,這是建議他們總是做
git pull --rebase && git push
簡短的回答:是的,他們必須要取並在他們推到分支任何其他更改合併。
更長的答案:Git有目的地不會嘗試聰明,以確定是否需要合併到彼此中:就Git而言,歷史記錄已更改,因此樹需要合併客戶端。幸運的是,在大多數情況下,這與git pull
或git pull --rebase
一樣簡單,然後快速檢查所做的更改以及是否一切仍然有效。
您描述的情況是不允許的:當這些不是快速轉發時,git遠程存儲庫不允許推送分支。
假設你想推動分支b
。遠程位於點r
。您的開發人員想要將提交從他的分支b
提交到遠程b
,從d
開始,直至其HEAD:如果r
不是嚴格等於d
,則此將不起作用。
這是通過設計:如果你被允許這樣做,你會打破每個其他開發者的項目分支,更不用說提交失敗的可能性很高。 Devs有他們的當地reflogs,當然,但仍然。
以及如果他們不?怎麼了?他們推動一個頭腦落後的變革集團,分歧是什麼? – codecompleting 2011-12-28 17:29:04
@codecompleting:推送將失敗。請注意,有了這麼多開發人員,您需要一些分支工作流程。 – 2011-12-28 17:33:52