亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

詳解git merge命令應用的三種情景

2024-07-21 02:03:42
字體:
來源:轉載
供稿:網友

一、git merge 命令應用的三種情景

1.1 “快進”(無沖突)

master分支

假設現在只有一個默認的 master 分支,并提交了3次,B0、B1和B2都是提交對象。

首先要清楚,每次產生的提交對象會包含一個指向上次提交對象(父對象)的指針,所以圖中B0、B1和B2之間的箭頭是指針指向父對象的意思,真正的提交順序還是B0到B1再到B2。同時 master 指針指向最新的提交B2。

另外Git中還有一個名為 HEAD 的特殊指針,它是一個指針,指向當前所在的本地分支(可以將 HEAD想象為當前分支的別名)。

dev新分支

現在新建一個分支并切換到新分支。

$ git checkout -b devSwitched to a new branch 'dev'

它是下面兩條命令的簡寫:

$ git branch dev$ git checkout dev


因為是在B2創建 dev,所以新分支 dev 指向B2。另外從分支 master 切換到分支 dev,所以HEAD指向當前分支 dev。

在 dev 分支工作并提交了2次:

合并dev和master

在分支 dev 的工作結束,切換到分支 master ,然后把 dev 合并到 master 上:

$ git checkout masterSwitched to branch 'master'$ git merge devMerge made by the 'recursive' strategy. test-2.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)

由于當前 master 分支所指向的提交是你當前提交(dev的提交)的直接上游,所以 Git 只是簡單的將 master 指針向前移動。 換句話說,當你試圖合并兩個分支時,如果順著一個分支走下去能夠到達另一個分支,那么 Git 在合并兩者的時候,只會簡單的將指針向前推進(指針右移),因為這種情況下的合并操作沒有需要解決的分歧――這就叫做 “快進(fast-forward)”。合并結果如下:


最后,你可以刪除 dev 分支,因為你已經不再需要它了 ―― master 分支已經指向了同一個位置。 你可以使用帶 -d 選項的 git branch 命令來刪除分支:

$ git branch -d dev

1.2 非“快進”,修改不同文件。(無沖突)

當在新分支 dev 進行了一次提交B3,再回到分支 master 又進行一次提交 B4。


這里用 git merge 合并分為兩種情況,現在講第一種情況:

在 master 分支和 dev 分支的公共祖先 B2 后,master 和 dev 的提交是對不同文件或者同一文件的不同部分進行了修改,Git 可以合并它們。(比如說原來有 test-1 和 test-2 兩個文件,B4修改的是 test-1 文件,而B3修改的是 test-2 文件,然后合并兩個分支。)

$ git checkout masterSwitched to branch 'master'$ git merge devMerge made by the 'recursive' strategy. test-2.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)

合并是成功的。

出現這種情況的時候,Git 會使用兩個分支的末端所指的快照(B3 和 B4)以及這兩個分支的公共祖先(B2),做一個簡單的三方合并。注意這里合并后 master 自動 commit 提交了一次,產生了提交B5。而B5中的結果是三方合并的結果。合并結果如下:


最后,合并完成,你已經不再需要dev分支了。 現在你可以刪除這個分支。

$ git branch -d dev

1.3 非“快進”,修改相同文件。(有沖突)

當在新分支 dev 進行了一次提交B3,再回到分支 master 又進行一次提交 B4。


上面講的是第一種情況,現在講第二種情況:

在 master 分支和 dev 分支的公共祖先 B2 后,master 和 dev 的提交是對同一個文件的同一個部分進行了不同的修改,Git 就沒法干凈的合并它們。(比如說原來有 test-1 和 test-2 兩個文件,B4修改的是 test-1 文件,而B3修改的也是 test-1 文件的同一部分,然后合并兩個分支。)

$ git checkout masterSwitched to branch 'master'$ git merge devAuto-merging test-1.txtCONFLICT (content): Merge conflict in test-1.txtAutomatic merge failed; fix conflicts and then commit the result.

合并是失敗的。

此時 Git 做了合并,但是沒有自動地創建一個新的合并提交。 Git 會暫停下來,等待你去解決合并產生的沖突。 你可以在合并沖突后的任意時刻使用 git status 命令來查看那些因包含合并沖突而處于未合并(unmerged)狀態的文件:

$ git statusOn branch masterYou have unmerged paths. (fix conflicts and run "git commit") (use "git merge --abort" to abort the merge)Unmerged paths: (use "git add <file>..." to mark resolution)    both modified:  test-1.txtno changes added to commit (use "git add" and/or "git commit -a")

任何因包含合并沖突而有待解決的文件,都會以未合并狀態標識出來。 Git 會在有沖突的文件中加入標準的沖突解決標記,這樣你可以打開這些包含沖突的文件然后手動解決沖突。 出現沖突的文件會包含一些特殊區段,看起來像下面這個樣子:

This is test-1.update test-1.add test-1.<<<<<<< HEADtest master.=======test dev.>>>>>>> dev

這里 HEAD 表示所指示的版本(也就是你的 master 分支所在的位置,因為你在運行 merge 命令的時候已經檢出到了這個分支)在這個區段的上半部分(======= 的上半部分),而 dev 分支所指示的版本在 ======= 的下半部分。 為了解決沖突,你必須選擇使用由 ======= 分割的兩部分中的一個,或者你也可以自行合并這些內容。 例如,你可以通過把這段內容換成下面的樣子來解決沖突:

This is test-1.update test-1.add test-1.test master.test dev.

然后手動提交:

$ git add .$ git commit -m "connection"[master f7daa6b] connection

然后沖突就解決了。合并結果如下:


最后,合并完成,你已經不再需要dev分支了。 現在你可以刪除這個分支。

$ git branch -d dev

到此這篇關于詳解git merge命令應用的三種情景的文章就介紹到這了,更多相關git merge命令內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品电影免费在线观看| 日韩视频在线一区| 成人黄色大片在线免费观看| 日韩小视频在线观看| 久久影院模特热| 国产福利精品视频| 国产91精品高潮白浆喷水| 亚洲女人天堂成人av在线| 5278欧美一区二区三区| 亚洲国产精品大全| 欧美在线视频导航| 欧美色videos| 亚洲欧美在线一区| 欧美激情精品久久久久久大尺度| 亚洲人午夜精品免费| 国产精品日韩在线一区| 日本精品免费一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 91在线免费观看网站| 91久久国产婷婷一区二区| 欧美精品精品精品精品免费| 久久九九国产精品怡红院| 亚洲国产精品字幕| 国产成人精品久久二区二区| 亚洲影院色在线观看免费| 热久久99这里有精品| 亚洲人成网站免费播放| 欧美国产高跟鞋裸体秀xxxhd| 97在线视频免费观看| 欧美一级高清免费| 三级精品视频久久久久| 日韩va亚洲va欧洲va国产| 欧美黄色小视频| 国产精品偷伦免费视频观看的| 97成人精品区在线播放| 一级做a爰片久久毛片美女图片| 亚洲国产日韩欧美在线图片| 亚洲精品在线不卡| 亚洲国产天堂久久国产91| 欧美电影《睫毛膏》| 日本久久久久亚洲中字幕| 久久影院免费观看| 亚洲无线码在线一区观看| 91精品视频在线看| 久久露脸国产精品| 中文字幕日韩视频| 亚洲欧美一区二区三区情侣bbw| 国产精品日韩精品| 日韩久久免费视频| 亚洲激情国产精品| 久久久亚洲影院你懂的| 久热爱精品视频线路一| 国产成人亚洲综合91精品| 精品国模在线视频| 欧美日本亚洲视频| 国产亚洲精品美女| 亚洲福利在线看| 激情久久av一区av二区av三区| 国产一区二中文字幕在线看| 亚洲精品999| 久久久久久久影院| 一级做a爰片久久毛片美女图片| 日韩电影中文字幕| 大荫蒂欧美视频另类xxxx| 狠狠色噜噜狠狠狠狠97| 日韩精品有码在线观看| 欧美亚洲在线视频| 高清一区二区三区日本久| 国产精品美乳一区二区免费| 国产日韩精品综合网站| 韩国19禁主播vip福利视频| 91欧美精品成人综合在线观看| 97色在线观看免费视频| 国产欧美久久久久久| 国产精品激情av在线播放| 欧美成人小视频| 久久成人18免费网站| 综合网日日天干夜夜久久| 日韩精品视频在线免费观看| 国产黑人绿帽在线第一区| 国内精品一区二区三区四区| 成人h片在线播放免费网站| 亚洲欧美国产高清va在线播| 国产福利精品视频| 2019中文字幕在线免费观看| 亚洲福利视频网站| 中文字幕日韩欧美在线视频| 亚洲欧美激情另类校园| 亚洲综合社区网| 日韩中文字幕国产精品| 国产精品影院在线观看| 韩国国内大量揄拍精品视频| 精品视频在线播放免| 久久国产视频网站| 日韩精品高清在线观看| 亚洲香蕉成视频在线观看| 日日骚久久av| 最近2019中文字幕一页二页| 欧美成人精品在线视频| 韩国精品久久久999| 欧美寡妇偷汉性猛交| 亚洲欧美另类在线观看| 精品免费在线视频| 亚洲欧洲免费视频| 在线观看免费高清视频97| 成人欧美一区二区三区在线湿哒哒| 日韩在线观看电影| 91精品国产91久久久久久| 在线播放日韩av| 亚洲欧美三级伦理| 国产成人97精品免费看片| 欧美成人黑人xx视频免费观看| 福利微拍一区二区| 国产精品美女久久| 亚洲精品日韩在线| 九九视频这里只有精品| 中文字幕视频一区二区在线有码| 人人爽久久涩噜噜噜网站| 欧美性videos高清精品| 亚洲午夜未满十八勿入免费观看全集| 久久久伊人日本| 欧美大码xxxx| 韩国精品美女www爽爽爽视频| 日韩精品视频在线播放| 欧美成年人视频网站| 日韩成人av在线| 午夜欧美不卡精品aaaaa| 日韩天堂在线视频| 日本三级久久久| 亚洲美女在线看| 成人免费淫片视频软件| 国产精品ⅴa在线观看h| 久久久久久高潮国产精品视| 国色天香2019中文字幕在线观看| 久久久久成人网| 日韩欧美在线第一页| 久久精品久久久久久| 欧美日韩色婷婷| 欧美床上激情在线观看| 欧美激情日韩图片| 黑人巨大精品欧美一区二区免费| 欧美极品在线视频| 美女av一区二区三区| 91亚洲精品一区| 青青久久av北条麻妃海外网| 精品视频9999| zzjj国产精品一区二区| xxxxx成人.com| 色妞一区二区三区| 亚洲福利视频专区| 少妇高潮 亚洲精品| 国产伦精品一区二区三区精品视频| 国产精品天天狠天天看| 国产精品99久久99久久久二8| 久久久精品一区| 成人免费xxxxx在线观看| 岛国av午夜精品| 久久久免费在线观看| 91av成人在线| 国产不卡精品视男人的天堂| 日韩女优在线播放| 日韩欧美在线免费观看| 丝袜美腿精品国产二区| 精品少妇一区二区30p|