git 使用 tortoisegit 解衝突

git 解衝突須要注意的問題

弄清除衝突雙向的修改意圖,並在解決衝突時,同時處理兩邊的意圖。html

舉例說明

A.txt 文件,git

在 master 分支上,有一行文字(代碼)是這樣:工具

這是一段在 master 分支上的文字。

Alice 在 dev 分支上,修改了這段文字(代碼),修改後以下:ui

在 dev 上,將 master 的文字修改成這段文字;
並添加了其它文字;
若是是代碼,這些代碼相互關聯。

Bob 基於 master 分支開發功能,在 f/feature 分支上,也修改了這段代碼,以下:3d

在一個功能分支(f/feature)上修改 master 上的代碼;
以及與之相關的其它內容。

如今,Bob 須要把 dev 分支的代碼合併到 f/feature 分支上,git 命令:(@f/feature) git merge dev
將獲得一個衝突。
如何解決這個衝突?code

解衝突

解衝突推薦使用 GUI 工具,由於直觀。這裏介紹 tortoisegit 解衝突的操做。htm

(圖1)操做入口:blog

(圖2)衝突列表:開發

(圖3)文件的解衝突頁面get

對於比較簡單的衝突,直接應用某一邊的修改,或者作一下簡單的編輯(圖3中,下面的區域是能夠編輯的。)

對於複雜衝突,須要瞭解兩邊對同一段代碼的修改意圖,即對方(Remote)爲何要這樣改,要達到什麼目的?本方(Local)爲何要這麼改,要達到什麼目的?

修改比較複雜是,在圖3的界面中,可能看不清具體的修改內容,能夠在 tortoisegit 中查看兩邊修改先後的對比。

(圖4)查看兩邊具體的修改。

下面是一張稍顯複雜的兩邊修改的對比圖。

(圖5)兩邊修改對比

經過圖5 ,能夠具體查看兩邊的修改意圖,具體在解衝突是,可能沒辦法一次處理完。
這時須要先在臨時處理衝突(如應用某一邊的修改),並記錄下另外一邊的修改(如保留這個窗口,或者截圖。)
在 git 的衝突處理完以後(這裏其實只是形式上處理完了,實際上丟棄了某一邊的修改),再修改代碼。

更復雜的狀況,可能兩邊對代碼的改動都很是大,須要代碼重構才能解決問題。固然,這個狀況不多,也應該避免發生。

補充

如圖1和圖5所示,其中的 Remote 指被合併過來的分支,這裏是在 f/feature 上合併 dev , 則 Remote 指 dev 上的修改,Local 指 f/feature 上的修改。

重點

兼顧兩邊的修改意圖,不能由於解衝突,丟失了某一邊的修改。

git GUI 與 tortoisegit

原文連接:
http://www.javashuo.com/article/p-bsemtuqr-ka.html

相關文章
相關標籤/搜索