2013-06-18 25 views
0

我有2個獨立的分支和一個文件已在這兩個分支上進行了更改(單獨的歷史後,某一點 - 讓我們只怪一個匿名開發人員對於這種濫用git)。Git修改文件,因爲它認爲它應該,但我認爲它是錯誤的

我遇到的問題是,合併這兩個分支時,git自動修改文件。

它並不認爲該文件在合併衝突(這將是偉大的,因爲我可以自己修復它,並選擇我想保留的部分)。

最後好像git比另一個版本更喜歡一個版本,因爲每當我合併時,我都會從其中一個分支中丟失一些方法。

任何想法我應該做什麼來覆蓋這個git功能,並能夠比較這兩個版本的文件,並有選擇地選擇我想要的最終文件看起來像什麼?

或者我應該做什麼的其他想法?

回答

1

git合併兩個文件時,如果在兩個父分支上更改的區域不重疊,它通常會自動將兩側的更改自動添加到新文件中而不會發生衝突。在這種情況下,你有幾個選擇:

  • 您可以git merge --no-commit,給你一個機會檢討所做的更改,並進行必要的調整,那麼你做手工git commit前完成合並。
  • 如果您知道對另一端所做的更改是僞造的,而您想完全忽略它們,則可以使用git merge -s ours來保留您的文件版本。

另一件需要注意的事情是git s rerere機制,我認爲這通常不會被默認啓用。但是,如果是這樣,它會注意到手動衝突解決方案,並且如果它發現特定衝突再次出現,則會自動應用相同的解決方案。如果是這樣的話,您可能會想要使用git merge --no-commit,就像在第一種情況下一樣,所以您可以在提交之前檢查並確保獲得期望的結果。

0

Git執行Pull和Push,因此它通常對完整的存儲庫執行此操作,而不是單個/選定的文件。 因此,如果它不是合併衝突,它將簡單地合併更改,或者如果您正在執行PULL操作,將會替換另一個。

所以可能的方式是執行同步或比較從其他分支並手動合併您的文件。

相關問題