日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

git 合并冲突_git分支管理的策略和冲突问题

發(fā)布時(shí)間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git 合并冲突_git分支管理的策略和冲突问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 備注:

  • 知識(shí)點(diǎn)

  • 關(guān)于分支中的沖突

  • 分支管理的策略

  • 分支策略

備注:

本文參考于廖雪峰老師的博客Git教程。依照其博客進(jìn)行學(xué)習(xí)和記錄,感謝其無(wú)私分享,也歡迎各位查看原文。

知識(shí)點(diǎn)

  • git log --graph --pretty=oneline --abbrev-commit查看分支合并情況

  • git log --graph查看分支合并圖

  • 當(dāng)兩個(gè)分支修改同一個(gè)文件時(shí),可能發(fā)生兩個(gè)分支不能自動(dòng)合并的問(wèn)題,需要手動(dòng)解決沖突(合并時(shí),Git將沖突標(biāo)識(shí)了出來(lái)),然后再次提交,即可完成合并。

  • 使用參數(shù)--no-ff禁用快合并模式,git merge --no-ff -m"merge with no-ff" dev,合并

關(guān)于分支中的沖突

如下,新建一個(gè)分支dev2,并且在新分支上開(kāi)發(fā):

$ git checkout -b dev2
切換到一個(gè)新分支 'dev2'

修改readme.txt,添加一行。

Creating a new branch is quick AND simple.
  • 在dev2分支進(jìn)行提交,
$ git add readme.txt
$ git commit -m"add new line at readme on dev2"
[dev2 4a097db] add new line at readme on dev2
1 file changed, 1 insertion(+)
  • 切換到master分支,同時(shí)在master上修改readme文件(添加域dev2分支上文件不同的內(nèi)容,Creating a new branch is quick & simple.),并且提交
git checkout master
切換到分支 'master'
您的分支領(lǐng)先 'origin/master' 共 1 個(gè)提交。
(使用 "git push" 來(lái)發(fā)布您的本地提交)
$ git add readme.txt
$ git commit -m"add new line at readme on master"
[master d562bf7] add new line at readme on master
1 file changed, 1 insertion(+)

如上,Git會(huì)自動(dòng)提示當(dāng)前master分支比遠(yuǎn)程origin/master分支領(lǐng)先一個(gè)提交

現(xiàn)在master分支和dev2 分支都有了各自新的提交,在這種情況下,Git無(wú)法執(zhí)行“快速合并”,只能試圖把各自的修改合并起來(lái),由于同時(shí)都修改了同一行內(nèi)容,此時(shí)會(huì)有沖突。

$ git merge dev2
自動(dòng)合并 readme.txt
沖突(內(nèi)容):合并沖突于 readme.txt
自動(dòng)合并失敗,修正沖突然后提交修正的結(jié)果。

Git提示自動(dòng)合并存在沖突,沖突文件是readme,需要修正沖突然后提交修正后的結(jié)果

如果用git status查看看當(dāng)前狀態(tài)

$ git status
位于分支 master
您的分支領(lǐng)先 'origin/master' 共 2 個(gè)提交。
(使用 "git push" 來(lái)發(fā)布您的本地提交)
您有尚未合并的路徑。
(解決沖突并運(yùn)行 "git commit")

未合并的路徑:
(使用 "git add ..." 標(biāo)記解決方案)

雙方修改:readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

如上,提示雙方修改

  • 查看readme.txt的內(nèi)容
$ cat readme.txt

`this is a test that I learn and use git version control system
this is a beginning
wofaidognyixie dognxi
create two new branch
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> dev2
  • Git用<<<<<<<、=======、>>>>>>>標(biāo)記出不同分支的內(nèi)容,我們修改如下后保存
Creating a new branch is quick and simple.
  • 修改沖突后提交
$ git add readme.txt
$ git commit -m"conflict fixed"
[master 8f69de8] conflict fixed

Git提示沖突已經(jīng)修復(fù),現(xiàn)在master和dev2分支均指向了現(xiàn)在工作區(qū)的狀態(tài)。

  • 使用git log --graph --pretty=oneline --abbrev-commit可以查看分支的合并情況
$ git log --graph --pretty=oneline --abbrev-commit
* 8f69de8 conflict fixed
|\
| * 4a097db add new line at readme on dev2
* | d562bf7 add new line at readme on master
|/
* 03d07d2 modify readme.txt at branch
* 036ced2 a push test
* 6a0f133 remove test.txt
* b5c87d4 add a test file
* d5b84bf modifya readme file
* 3033dda add a readme file

如上,分支合并和沖突記錄

  • 此時(shí)可以刪除dev2分支
$ git branch -d dev2
已刪除分支 dev2(曾為 4a097db)。

沖突解決完成

分支管理的策略

通常,合并分支時(shí)Git使用Fast forward模式快速合并。但是快速模式刪除分支,會(huì)丟失分支信息。

強(qiáng)制禁用Fast forward模式,Git會(huì)將merge記錄為一個(gè)新的提交,同時(shí)分支歷史會(huì)記錄分支信息。

  • 切換到dev分支,并修改readme文件,同時(shí)提交commit
$ git checkout -b dev
切換到一個(gè)新分支 'dev'
$ git add readme.txt
$ git commit -m"a new branch"
[dev 44dffc0] a new branch
1 file changed, 1 insertion(+)
  • 切換到master分支
$ git checkout master
切換到分支 'master'
您的分支領(lǐng)先 'origin/master' 共 4 個(gè)提交。
(使用 "git push" 來(lái)發(fā)布您的本地提交)
  • 使用--no-ff參數(shù)合并分支dev到當(dāng)前master,本次合并要?jiǎng)?chuàng)建一個(gè)新的commit,所以加上-m參數(shù)描述
$ git merge --no-ff -m"merge with no-ff" dev
Merge made by the 'recursive' strategy.
readme.txt | 1 +
1 file changed, 1 insertion(+)
  • 使用git log查看分支合并圖
$ git log --graph --pretty=oneline --abbrev-commit
* 7c4d427 merge with no-ff
|\
| * 44dffc0 a new branch
|/
* 8f69de8 conflict fixed
|\
| * 4a097db add new line at readme on dev2
* | d562bf7 add new line at readme on master
|/
* 03d07d2 modify readme.txt at branch
* 036ced2 a push test
* 6a0f133 remove test.txt
* b5c87d4 add a test file
* d5b84bf modifya readme file
* 3033dda add a readme file

分支策略

實(shí)際開(kāi)發(fā)中,分支管理應(yīng)按照以下幾點(diǎn):

  • master分支是穩(wěn)定分支,用來(lái)發(fā)布最新穩(wěn)定版本,開(kāi)發(fā)中不需要修改它

  • 開(kāi)發(fā)中盡量在dev中開(kāi)發(fā),擴(kuò)展新功能、修復(fù)bug等,等到正式版發(fā)布時(shí),在將dev分支合并到master上。

  • 開(kāi)發(fā)人員在dev分支上開(kāi)發(fā),每個(gè)人都有自己的分支,并且往dev分支上合并。

  • 團(tuán)隊(duì)合作分支開(kāi)發(fā)

    參考

    Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    總結(jié)

    以上是生活随笔為你收集整理的git 合并冲突_git分支管理的策略和冲突问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。