最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解git merge命令應(yīng)用的三種情景

 更新時(shí)間:2020年08月07日 10:44:34   作者:Samven_7  
這篇文章主要介紹了詳解git merge命令應(yīng)用的三種情景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、git merge 命令應(yīng)用的三種情景

1.1 “快進(jìn)”(無(wú)沖突)

master分支

假設(shè)現(xiàn)在只有一個(gè)默認(rèn)的 master 分支,并提交了3次,B0、B1和B2都是提交對(duì)象。

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

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

dev新分支

現(xiàn)在新建一個(gè)分支并切換到新分支。

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

它是下面兩條命令的簡(jiǎn)寫(xiě):

$ git branch dev
$ git checkout dev


因?yàn)槭窃贐2創(chuàng)建 dev,所以新分支 dev 指向B2。另外從分支 master 切換到分支 dev,所以HEAD指向當(dāng)前分支 dev。

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

合并dev和master

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

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

由于當(dāng)前 master 分支所指向的提交是你當(dāng)前提交(dev的提交)的直接上游,所以 Git 只是簡(jiǎn)單的將 master 指針向前移動(dòng)。 換句話說(shuō),當(dāng)你試圖合并兩個(gè)分支時(shí),如果順著一個(gè)分支走下去能夠到達(dá)另一個(gè)分支,那么 Git 在合并兩者的時(shí)候,只會(huì)簡(jiǎn)單的將指針向前推進(jìn)(指針右移),因?yàn)檫@種情況下的合并操作沒(méi)有需要解決的分歧——這就叫做 “快進(jìn)(fast-forward)”。合并結(jié)果如下:


最后,你可以刪除 dev 分支,因?yàn)槟阋呀?jīng)不再需要它了 —— master 分支已經(jīng)指向了同一個(gè)位置。 你可以使用帶 -d 選項(xiàng)的 git branch 命令來(lái)刪除分支:

$ git branch -d dev

1.2 非“快進(jìn)”,修改不同文件。(無(wú)沖突)

當(dāng)在新分支 dev 進(jìn)行了一次提交B3,再回到分支 master 又進(jìn)行一次提交 B4。


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

在 master 分支和 dev 分支的公共祖先 B2 后,master 和 dev 的提交是對(duì)不同文件或者同一文件的不同部分進(jìn)行了修改,Git 可以合并它們。(比如說(shuō)原來(lái)有 test-1 和 test-2 兩個(gè)文件,B4修改的是 test-1 文件,而B(niǎo)3修改的是 test-2 文件,然后合并兩個(gè)分支。)

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

合并是成功的。

出現(xiàn)這種情況的時(shí)候,Git 會(huì)使用兩個(gè)分支的末端所指的快照(B3 和 B4)以及這兩個(gè)分支的公共祖先(B2),做一個(gè)簡(jiǎn)單的三方合并。注意這里合并后 master 自動(dòng) commit 提交了一次,產(chǎn)生了提交B5。而B(niǎo)5中的結(jié)果是三方合并的結(jié)果。合并結(jié)果如下:


最后,合并完成,你已經(jīng)不再需要dev分支了。 現(xiàn)在你可以刪除這個(gè)分支。

$ git branch -d dev

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

當(dāng)在新分支 dev 進(jìn)行了一次提交B3,再回到分支 master 又進(jìn)行一次提交 B4。


上面講的是第一種情況,現(xiàn)在講第二種情況:

在 master 分支和 dev 分支的公共祖先 B2 后,master 和 dev 的提交是對(duì)同一個(gè)文件的同一個(gè)部分進(jìn)行了不同的修改,Git 就沒(méi)法干凈的合并它們。(比如說(shuō)原來(lái)有 test-1 和 test-2 兩個(gè)文件,B4修改的是 test-1 文件,而B(niǎo)3修改的也是 test-1 文件的同一部分,然后合并兩個(gè)分支。)

$ git checkout master
Switched to branch 'master'
$ git merge dev
Auto-merging test-1.txt
CONFLICT (content): Merge conflict in test-1.txt
Automatic merge failed; fix conflicts and then commit the result.

合并是失敗的。

此時(shí) Git 做了合并,但是沒(méi)有自動(dòng)地創(chuàng)建一個(gè)新的合并提交。 Git 會(huì)暫停下來(lái),等待你去解決合并產(chǎn)生的沖突。 你可以在合并沖突后的任意時(shí)刻使用 git status 命令來(lái)查看那些因包含合并沖突而處于未合并(unmerged)狀態(tài)的文件:

$ git status
On branch master
You 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.txt

no changes added to commit (use "git add" and/or "git commit -a")

任何因包含合并沖突而有待解決的文件,都會(huì)以未合并狀態(tài)標(biāo)識(shí)出來(lái)。 Git 會(huì)在有沖突的文件中加入標(biāo)準(zhǔn)的沖突解決標(biāo)記,這樣你可以打開(kāi)這些包含沖突的文件然后手動(dòng)解決沖突。 出現(xiàn)沖突的文件會(huì)包含一些特殊區(qū)段,看起來(lái)像下面這個(gè)樣子:

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

這里 HEAD 表示所指示的版本(也就是你的 master 分支所在的位置,因?yàn)槟阍谶\(yùn)行 merge 命令的時(shí)候已經(jīng)檢出到了這個(gè)分支)在這個(gè)區(qū)段的上半部分(======= 的上半部分),而 dev 分支所指示的版本在 ======= 的下半部分。 為了解決沖突,你必須選擇使用由 ======= 分割的兩部分中的一個(gè),或者你也可以自行合并這些內(nèi)容。 例如,你可以通過(guò)把這段內(nèi)容換成下面的樣子來(lái)解決沖突:

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

然后手動(dòng)提交:

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

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


最后,合并完成,你已經(jīng)不再需要dev分支了。 現(xiàn)在你可以刪除這個(gè)分支。

$ git branch -d dev

到此這篇關(guān)于詳解git merge命令應(yīng)用的三種情景的文章就介紹到這了,更多相關(guān)git merge命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Scratch3.0二次開(kāi)發(fā)之windows環(huán)境下打包成exe的流程

    Scratch3.0二次開(kāi)發(fā)之windows環(huán)境下打包成exe的流程

    今天通過(guò)本文給大家分享Scratch3.0二次開(kāi)發(fā)之windows環(huán)境下打包成exe的詳細(xì)流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08
  • vscode配置leetcode插件并解決無(wú)法登錄問(wèn)題(圖文詳解)

    vscode配置leetcode插件并解決無(wú)法登錄問(wèn)題(圖文詳解)

    這篇文章主要介紹了vscode配置leetcode插件并解決無(wú)法登錄問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Config服務(wù)端連接Git配置的技巧

    Config服務(wù)端連接Git配置的技巧

    今天小編抽空給大家介紹Config服務(wù)端連接Git配置的技巧,代碼分為導(dǎo)入依賴和編寫(xiě)配置文件的方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • Windows 系統(tǒng)下的 Git 2.7 最新下載及安裝教程圖文詳解

    Windows 系統(tǒng)下的 Git 2.7 最新下載及安裝教程圖文詳解

    這篇文章主要介紹了Windows 系統(tǒng)下的 Git 2.7 最新下載及安裝教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 解決MAC系統(tǒng)升級(jí)后虛擬機(jī)黑屏問(wèn)題

    解決MAC系統(tǒng)升級(jí)后虛擬機(jī)黑屏問(wèn)題

    相信大家都抱著嘗鮮的心理,更新了MacOS Catalina 。在更新之后,打開(kāi)VMware Fusion使用中發(fā)現(xiàn),虛擬機(jī)處于黑屏狀態(tài),無(wú)法看到虛擬機(jī)的屏幕,在各種嘗試之后,找到一種正確的解決辦法
    2021-09-09
  • ElasticSearch寫(xiě)入流程實(shí)例解析

    ElasticSearch寫(xiě)入流程實(shí)例解析

    這篇文章主要為大家介紹了ElasticSearch寫(xiě)入流程實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 計(jì)算機(jī)中的字符串編碼、亂碼、BOM等問(wèn)題詳解

    計(jì)算機(jī)中的字符串編碼、亂碼、BOM等問(wèn)題詳解

    這篇文章主要介紹了計(jì)算機(jī)中的字符串編碼、亂碼、BOM等問(wèn)題詳解,對(duì)文件編碼、vim亂碼、什么情況下會(huì)出現(xiàn)亂碼、字符編碼的發(fā)展歷史、字符集和編碼的區(qū)別、漢字ANSI編碼的發(fā)展歷史、BOM頭等問(wèn)題做了全面總結(jié)、詳細(xì)介紹,需要的朋友可以參考下
    2014-07-07
  • 進(jìn)制轉(zhuǎn)換基礎(chǔ)

    進(jìn)制轉(zhuǎn)換基礎(chǔ)

    很多年前大學(xué)里學(xué)過(guò)的進(jìn)制轉(zhuǎn)換還是挺簡(jiǎn)單的,沒(méi)想到多年不用了,都忘了,剛好看到這篇文章,特分享下,方便需要的朋友
    2013-02-02
  • 分享15個(gè)美化代碼的代碼語(yǔ)法高亮工具

    分享15個(gè)美化代碼的代碼語(yǔ)法高亮工具

    由于技術(shù)類(lèi)網(wǎng)站經(jīng)常提供一些代碼,分享給大家,但普通的代碼看起來(lái)不那么舒服,所以很多人開(kāi)發(fā)了代碼高亮插件,讓代碼顯示的更漂亮
    2013-09-09
  • input的accept屬性讓文件上傳安全高效

    input的accept屬性讓文件上傳安全高效

    文章介紹了HTML的input文件上傳`accept`屬性在文件上傳校驗(yàn)中的重要性和優(yōu)勢(shì),通過(guò)使用`accept`屬性,可以減少前端JavaScript的復(fù)雜性,提高用戶體驗(yàn),并且在大多數(shù)主流瀏覽器中都有很好的支持
    2025-12-12

最新評(píng)論

麦盖提县| 蓝田县| 那曲县| 全州县| 盐城市| 余干县| 利川市| 黔西县| 保定市| 香港 | 马关县| 秀山| 长海县| 民县| 康平县| 阿图什市| 平塘县| 双峰县| 含山县| 涞源县| 元谋县| 全南县| 平山县| 韶山市| 界首市| 岳普湖县| 南郑县| 小金县| 同江市| 华宁县| 犍为县| 甘泉县| 嘉荫县| 贵阳市| 灌云县| 都匀市| 丹东市| 鹤壁市| 永平县| 泊头市| 建昌县|