2017-03-04 271 views
-2

我知道如果您修改文件中的相同行並嘗試合併分支,您會遇到合併衝突,因爲它不知道要保留哪個版本。Git合併(衝突)

那麼,這是否意味着,如果你在一個文件中修改不同的線路,混帳將能合併嗎?這隻適用於添加新行或刪除嗎?如果在一個分支中,該文件未經修改/未經修改,而在另一個分支中,則會刪除該文件中的幾行。如果我們合併分支,git是否保留刪除?

謝謝!

+0

可能重複的[如何解決合併衝突在Git?](http://stackoverflow.com/questions/161813/how-to-resolve-merge-conflicts-in-git) – thirtythreeforty

回答

0

當兩個用戶在同一個文件時,通常會有不會有任何合併衝突,除非修改文件在同一行。

這意味着,如果一條線是一個分支刪除,並在另一個保持不變,當兩個分支合併的缺失將保持不變。

2

Git不合並文件。它合併了更改。

那麼,在技術上它合併分支機構,但如果我們考慮一個單一的文件,它結合了這些分支機構帶來的變化。

所以,如果如你所說,在一個分支,我們還沒有修改的文件,並在另一個我們已經刪除了文件的某些行,如果合併,那麼,缺失將保持和合並。也就是說,最終的合併文件也會刪除這些行。

確切的算法是相當複雜的,至少比「不一樣行」更復雜。

例如,合併算法需要識別變化的上下文,並且爲了這樣做,它將需要不改變的周圍線。

因此,如果一個分支修改單行線,而在另一個分支修改一行或下一行,試圖合併在合併衝突可能結束。

+0

我認爲「合併更改」在技​​術上比「合併分支」更正確,因爲Git只是找到合併基礎並將兩個提交與該合併基礎進行比較。特別是你可以做'git checkout hash1; git合併hash2'以使另一個特定提交合並的分離HEAD提交。人們可以爭辯說這些是兩個匿名的分支,所以這種方式並不是很明確,無論如何,它們都是很好的區別,你的回答是正確的。 :-) – torek