04 分支管理 —— 解決衝突

04 分支管理 —— 解決衝突

解決衝突

準備新的dev分支,準備學習衝突的解決。git

lwenhaodeMacBook-Pro:TestGit lwenhao$ git checkout -b dev
Switched to a new branch 'dev'
lwenhaodeMacBook-Pro:TestGit lwenhao$ git branch
* dev
  master
lwenhaodeMacBook-Pro:TestGit lwenhao$

修改README.md最後一行:學習

lwenhaodeMacBook-Pro:TestGit lwenhao$ cat README.md 
# TestGit

建立一個"dev"分支

lwenhaodeMacBook-Pro:TestGit lwenhao$

dev分支上提交:.net

lwenhaodeMacBook-Pro:TestGit lwenhao$ git add README.md 
lwenhaodeMacBook-Pro:TestGit lwenhao$ git commit -m "update readme.md"
[dev 8b01682] update readme.md
 1 file changed, 1 insertion(+), 1 deletion(-)
lwenhaodeMacBook-Pro:TestGit lwenhao$

切換到master分支code

lwenhaodeMacBook-Pro:TestGit lwenhao$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
lwenhaodeMacBook-Pro:TestGit lwenhao$

Git還會自動提示咱們當前master分支比遠程的master分支要超前1個提交。blog

master分支上把README.md文件的最後一行改成:get

lwenhaodeMacBook-Pro:TestGit lwenhao$ cat README.md 
# TestGit

建立一個新的分支,我來操做。

lwenhaodeMacBook-Pro:TestGit lwenhao$

提交:it

lwenhaodeMacBook-Pro:TestGit lwenhao$ git add README.md 
lwenhaodeMacBook-Pro:TestGit lwenhao$ git commit -m "add 我要提交"
[master 426ee67] add 我要提交
 1 file changed, 1 insertion(+), 1 deletion(-)
lwenhaodeMacBook-Pro:TestGit lwenhao$

如今,master分支和dev分支各自都分別有新的提交io

這種狀況下,Git沒法執行「快速合併」,只能試圖把各自的修改合併起來,但這種合併就會有衝突。ast

lwenhaodeMacBook-Pro:TestGit lwenhao$ git merge dev
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
lwenhaodeMacBook-Pro:TestGit lwenhao$

果真衝突了!Git告訴咱們,README.md文件存在衝突,必須手動解決衝突後再提交。git status也能夠告訴咱們衝突的文件:test

lwenhaodeMacBook-Pro:TestGit lwenhao$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

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:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
lwenhaodeMacBook-Pro:TestGit lwenhao$

直接查看README.md的內容:

lwenhaodeMacBook-Pro:TestGit lwenhao$ cat README.md 
# TestGit

<<<<<<< HEAD
建立一個新的分支,我來操做。
=======
建立一個"dev"分支
>>>>>>> dev

lwenhaodeMacBook-Pro:TestGit lwenhao$

Git用<<<<<<<=======>>>>>>>標記出不一樣分支的內容,咱們修改以下後保存:

lwenhaodeMacBook-Pro:TestGit lwenhao$ cat README.md 
# TestGit

建立一個"dev"分支,我來操做。

lwenhaodeMacBook-Pro:TestGit lwenhao$

再提交:

lwenhaodeMacBook-Pro:TestGit lwenhao$ git add README.md 
lwenhaodeMacBook-Pro:TestGit lwenhao$ git commit -m "conflict fixed"
[master 615c264] conflict fixed
lwenhaodeMacBook-Pro:TestGit lwenhao$

用帶參數的git log也能夠看到分支的合併狀況:

lwenhaodeMacBook-Pro:TestGit lwenhao$ git log --graph --pretty=oneline --abbrev-commit
*   615c264 (HEAD -> master) conflict fixed
|\  
| * 8b01682 (dev) update readme.md
* | 426ee67 add 我要提交
|/  
* fca856d branch test
* 38e1bd3 (origin/master, origin/HEAD) Initial commit

最後,刪除dev分支:

lwenhaodeMacBook-Pro:TestGit lwenhao$ git branch -d dev
Deleted branch dev (was 8b01682).
lwenhaodeMacBook-Pro:TestGit lwenhao$

繼續閱讀:05 分支管理 —— 分支管理策略

相關文章
相關標籤/搜索