本文繼續我們的“高級git”系列。在Twitter上關注Tower,或訂閱其新聞通訊以獲取有關未來文章的最新信息。
合併衝突:GIT用戶,尤其是那些合作的人的常見挫敗感。但是,它們通常比看起來不那麼艱鉅。本期解釋了他們的原因,性質和解決方案。
當將不同來源的變化集成到當前分支中時,會出現合併衝突。這不僅限於分支合併;重新挑選,挑選櫻桃, git pull
甚至藏匿處都可能引發衝突。雖然並非每個集成都會導致衝突,但在存在矛盾的變化時會發生衝突。
Git的合併能力是一個關鍵優勢。它會自動處理大多數集成。但是,當更改衝突(例如,在兩個提交中修改或在一個分支中修改並在另一個分支中刪除的文件)的相同代碼行進行了不同的修改時,需要人為乾預來解決歧義。
GIT顯然信號合併衝突。終端將立即報告失敗的合併或折疊:
<code>$ git merge develop CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.</code>
即使您錯過了此消息, git status
也會突出衝突。像塔一樣的Git Guis提供視覺提示,以確保您不會忽略衝突。請放心,吉特(Git)很難錯過合併衝突。
忽略合併衝突不是一個選擇。必須解決。您有兩個選擇:解決衝突或撤銷引起的衝突。
使用--abort
參數(例如, git merge --abort
, git rebase --abort
)通常很簡單。這逆轉了合併/折疊,恢復了衝突前的狀態。即使您已經開始解決文件,這也有效。您總是可以中止和重新啟動。
讓我們檢查一個衝突index.html
文件:
git標記與的部分相互衝突。此標記後的內容來自您當前的分支(頭)。 <code>=======
分開相互衝突的變化,其次是另一個分支的變化(例如, develop
),標誌著 。
您的任務是使用文本編輯器,IDE,GIT GUI或合併工具編輯文件以解決衝突。
分辨率方法 - 文本編輯,IDE,GUI或合併工具 - 無關緊要;最終文件必須反映您所需的狀態。簡單的衝突可能涉及丟棄變更。更複雜的衝突可能需要協作來決定要保留哪種更改或如何結合它們。
儘管可以手動編輯,但專用工具通常會簡化該過程。 GIT GUI提供視覺衝突解決方案。合併工具提供了高級的DIFF查看和比較功能(並排,組合視圖等)。使用git config
配置您的首選工具,並使用git mergetool
調用它。
解決衝突並進行了更改之後( git add<filename></filename>
),像往常一樣進行更改。
合併衝突是可以管理的。了解原因可以使您撤消或解決衝突。甚至錯誤都是可逆的。只需恢復衝突前的提交並重新開始即可。
要深入研究高級git,請探索免費的“高級git套件”,其中包含有關分支,互動式折疊,反射式,反式編碼的視頻,等等。
以上是合併衝突:它們是什麼以及如何與之打交道的詳細內容。更多資訊請關注PHP中文網其他相關文章!