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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git 分支管理和冲突解决

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git 分支管理和冲突解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

創建分支

  • git branch 沒有參數,顯示本地版本庫中所有的本地分支名稱。 當前檢出分支的前面會有星號。

  • git branch newname 在當前檢出分支上新建分支,名叫newname。

  • git checkout newname 檢出分支,即切換到名叫newname的分支。

  • git checkout –b newname master 這個命令將上面兩個命令合并:在master分支上創建分支newname分支并檢出到該分支。

合并分支間的修改 Merge

合并操作將兩條或多條分支合并到一起,實際上有好幾種分支合并方法,下面介紹主要的三種:

1.直接合并(straight merge):

把兩條分支上的歷史軌跡合并,交匯到一起。

比如要把dev分支上的所有東東合并到master分支:

首先先到master分支:git checkout master

然后把dev給合并過來:git merge dev

注意沒參數的情況下merge是fast-forward的,即Git將master分支的指針直接移到dev的最前方。 換句話說,如果順著一個分支走下去可以到達另一個分支的話,那么Git在合并兩者時,只會簡單移動指針,所以這種合并成為快進式(Fast-forward)。

2.壓合合并(squashed commits):

將一條分支上的若干個提交條目壓合成一個提交條目,提交到另一條分支的末梢。

把dev分支上的所有提交壓合成主分支上的一個提交,即壓合提交: git checkout master

git merge --squash dev

此時,dev上的所有提交已經合并到當前工作區并暫存,但還沒有作為一個提交,可以像其他提交一樣,把這個改動提交到版本庫中:

git commit –m “something from dev”

3.揀選合并(cherry-picking):

揀選另一條分支上的某個提交條目的改動帶到當前分支上。

每一次提交都會產生一個全局唯一的提交名稱,利用這個名稱就可以進行揀選提交。

比如在dev上的某個提交叫:321d76f

把它合并到master中:

git checkout master git cherry-pick 321d76f

要揀選多個提交,可以給git cherry-pick命令傳遞-n選項,比如:

git cherry-pick –n 321d76f

這樣在揀選了這個改動之后,進行暫存而不立即提交,接著可以進行下一個揀選操作,一旦揀選完需要的各個提交,就可以一并提交。

沖突處理

當兩條分支對同一個文件的同一個文本塊進行了不同的修改,并試圖合并時,Git不能自動合并的,稱之為沖突(conflict)。解決沖突需要人工處理。

比如當前在master分支,想把dev分支merge過來,結果產生了一個沖突,打開文件內容可以看到這么一個沖突:

<<<<<<< HEAD test in master ======= test in dev >>>>>>> dev

<<<<<<<標記沖突開始,后面跟的是當前分支中的內容。 HEAD指向當前分支末梢的提交。 =======之后,>>>>>>>之前是要merge過來的另一條分支上的代碼。 >>>>>>>之后的dev是該分支的名字。

對于簡單的合并,手工編輯,然后去掉這些標記,最后像往常的提交一樣先add再commit即可。

刪除分支

有些分支沒有必要長期保存,比如分支中的代碼已經打了標簽并已發布,或者實驗分支已經成功完成工作或中途廢棄等等。

注意:打了標簽的分支,Git在刪除該分支時,從版本樹起始到此標簽間的全部歷史軌跡均會保留,此時刪除分支操作只是刪除分支本身的名稱,因此可以說該分支沒有必要長期保存。 而在其他版本控制工具中,刪除分支通常意味著刪除分支上的所有歷史軌跡,所以不能因為打了標簽就認為其沒有必要保存。

刪除一個分支dev2: git branch –d dev2

注意不能刪除當前所在分支,需要轉到別的分支上。

如果要刪除的分支已經成功合并到當前分支,刪除分支的操作會直接成功。

如果要刪除的分支沒有合并到當前所在分支,則會出現提示,如果確定無須合并而要直接刪除,則執行命令:

git branch –D dev2 進行強刪。

分支重命名

重命名分支:

git branch –m oldname newname

-m不會覆蓋已有分支名稱,即如果名為newname的分支已經存在,則會提示已經存在了。

如果改成-M就可以覆蓋已有分支名稱了,即會強制覆蓋名為newname的分支,這種操作要謹慎。

參考資料

  • 《版本控制之道——使用Git》(Pragmatic Version Control Using Git)

  • Git分支管理策略

  • Git Reference

轉載于:https://my.oschina.net/u/563723/blog/907444

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Git 分支管理和冲突解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。