準備新的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 分支管理 —— 分支管理策略