Git系列7 merge 分支衝突

2021-08-31 11:50:07 字數 2387 閱讀 4494

今天的情況是這樣, 想象不僅有人在做開發版dev的更新, 還有人在修改master中的一些 bug. 當我們再merge dev的時候, 衝突就來了. 因為 git 不知道應該怎麼處理merge時, 在masterdev的不同修改.

當建立了乙個分支後, 我們同時對兩個分支都進行了修改.

比如在:

在下面可以看出在masterdev中不同的commit:

# 這是 master 的 log

* 3d7796e change 4 in master # 這一條 commit 和 dev 的不一樣

* 47f167e back to change 1 and add comment for 1.py

* 904e1ba change 2

* c6762a1 change 1

* 13be9a7 create 1.py

-----------------------------

# 這是 dev 的 log

* f7d2e3a change 3 in dev # 這一條 commit 和 master 的不一樣

* 47f167e back to change 1 and add comment for 1.py

* 904e1ba change 2

* c6762a1 change 1

* 13be9a7 create 1.py

當我們想要mergedevmaster的時候:

$ git branch

dev* master

-------------------------

$ git merge dev

# 輸出

auto-merging 1.py

conflict (content): merge conflict in 1.py

automatic merge failed; fix conflicts and then commit the result.

git 發現的我們的1.pymasterdev上的版本是不同的, 所以提示merge有衝突. 具體的衝突, git 已經幫我們標記出來, 我們開啟1.py就能看到:

a = 1

# i went back to change 1

<<<<<<< head

# edited in master

*****==

# edited in dev

>>>>>>> dev

所以我們只要在1.py中手動合併一下兩者的不同就 ok 啦. 我們將當前head(也就是master) 中的描述 和dev中的描述合併一下.

a = 1

# i went back to change 1

# edited in master and dev

然後再commit現在的檔案, 衝突就解決啦.

$ git commit -am "solve conflict"
再來看看masterlog:

$ git log --oneline --graph

# 輸出

* 7810065 solve conflict

|\

| * f7d2e3a change 3 in dev

* | 3d7796e change 4 in master

|/

* 47f167e back to change 1 and add comment for 1.py

* 904e1ba change 2

* c6762a1 change 1

* 13be9a7 create 1.py

回到這張圖, 他也詮釋了兩個分支都有更改的時候的樣子, 在這種情況下merge, 我們就要使用上述的流程.

git 處理merge衝突

目錄兩處的 git合併,需要解決產生的衝突,我現在初步接觸merge的問題,暫且這樣記錄。保留原來的改動,先將遠端 pull下來然後應用原來的改動git stash git pull git stash pop 不保留原來的改動,直接回退到上一版本再pullgit reset hard git pu...

Git分支衝突

1.在分支new上修改檔案hello.txt並將它提交到該分支下 2.切換到主分支 master 下修改hello.txt,將它提交到該分支下 3.將new分支合併到主分支下,可以看到因為兩個分支上的內容有衝突,導致出錯。切換到分支new git checkout new 將修改的hello.txt...

git 分支合併 分支衝突

分支合併的不同使用場景 合併指定分支到當前分支 git merge 當多分枝協作時,往往會產生一些衝突 你的本地有兩個分支master dev,指向同乙個版本,起始時狀態相同,且只有乙個readme.txt檔案。你在master上新增一段hello master,且add git commit 然後...