git merge 合併分支

2021-09-12 15:59:41 字數 1396 閱讀 5336

master

/c0 ---- c1 ---- c2 ---- c4

\c3 ---- c5

\issuefix

當前分支是master

$ git checkout master

把issuefix中的內容merge進來:

$ git merge issuefix

如果沒有衝突的話,merge完成。有衝突的話,git會提示那個檔案中有衝突,比如有如下衝突:

<<<<<<< head:test.c

printf (「test1″);

printf (「test2″);

>>>>>>> issuefix:test.c

可以看到 *****== 隔開的上半部分,是 head(即 master 分支,在執行 merge 命令時檢出的分支)中的內容,下半部分是在 issuefix 分支中的內容。解決衝突的辦法無非是二者選其一或者由你親自整合到一起。比如你可以通過把這段內容替換為下面這樣來解決:

printf (「test2″);

這個解決方案各採納了兩個分支中的一部分內容,而且刪除了 <<<<<<<,*****==,和》 這些行。在解決了所有檔案裡的所有衝突後,執行 git add 將把它們標記為已解決(resolved)。因為一旦暫存,就表示衝突已經解決。如果你想用乙個有圖形介面的工具來解決這些問題,不妨執行 git mergetool,它會呼叫乙個視覺化的合併工具並引導你解決所有衝突:

$ git mergetool

merge tool candidates: kdiff3 tkdiff xxdiff meld **imdiff opendiff emerge vimdiff

merging the files: index.html

normal merge conflict for 『test.c』:

: modified

: modified

hit return to start merge resolution tool (kdiff3):

合併後的分支圖如下:

master

/c0 ---- c1 ---- c2 ---- c4 ---- c6

\ /

c3 ----c5

\issuefix

注意,這次合併的實現,由於當前 master 分支所指向的 commit (c4)並非想要併入分支(issuefix)的直接祖先,git 不得不進行一些處理。就此例而言,git 會用兩個分支的末端(c4 和 c5)和它們的共同祖先(c2)進行一次簡單的三方合併。對三方合併的結果作一新的快照,並自動建立乙個指向它的 commit(c6)

退出合併工具以後,git 會詢問你合併是否成功。如果回答是,它會為你把相關檔案暫存起來,以表明狀態為已解決。然後可以用 git commit 來完成這次合併提交。

Git merge和rebase分支合併命令的區別

歡迎關注富途web開發團隊,缺人從眾 上週花了時間把futu web部落格分類,文章,入口搞了一下,主要為了解決seo問題。接下來seo好不好就看效果了。futu web 部落格位址 檔案狀態轉換 檔案儲存 上面這兩張圖會對大家理解git命令有很大的幫助。在使用git進行版本管理的專案中,當完成乙個...

git merge 遠端兩個分支

背景問題,把原有的dev版本合併到master版本中。1 把原始碼clone到本地庫中。git clone gitsite git遠端 2 在本地新建乙個與遠端的dev版本相同 被合併的版本 的dev分支git checkout b devorigin dev3 返回到master版本git che...

git merge遠端兩個分支

提要 專案用的gitlab,手動在管理後台只能新建刪除以及合併master分支,並不能合併2個有衝突的分支,所以還得用命令列 git clone git branch a master remotes origin head origin master remotes origin v1.2 rem...