上次學習了git簡單分支操作指令沪悲,今天玩玩看如何將創(chuàng)建的分支與祖分支合并获洲。
git checkout develop
git branch test
git checkout test
首先我們進入 develop
分支下創(chuàng)建了 test
分支,并進入 test
分支殿如。 這時候和預期的一樣贡珊,在 test
分支下有一份 develop
相同的項目。
這時候我們操作 test
分支創(chuàng)建一個 test.md
文件握截,對其添加一些簡單的數(shù)據(jù) helloworld
飞崖。
git checkout develop
我們切回 develop
分支,發(fā)現(xiàn)他同樣有這個文件,里面的內(nèi)容也是 helloworld
.
git checkout test
git add test.md
git checkout develop
A test.md
Switched to branch 'develop'
這時我們切回 test
分支,將 test.md
使用 git add
操作一遍砌们,在回到 develop
舵稠。 這時系統(tǒng)提示我們說 A test.md
表示這個文件是處于 add
狀態(tài)的由驹。這個時候兩邊的文件都是 add
狀態(tài)拧略。
git checkout test
git commit -m 'test.md'
git checkout develop
那我們在切換回 test
分支犀农,使用 git commit
將文件提交到本地倉庫摇天,在切換回 develop
分支蒲讯,神奇的發(fā)現(xiàn) test.md
文件不見了忘朝? 我們在回去 test
看看,文件是否是在 test
分支中判帮。
git checkout test
這是我們會發(fā)現(xiàn) test.md
文件是存在的局嘁。也就是說,當我們在使用 git commit
命令時晦墙,添加到本地倉庫的文件只屬于 test
分支悦昵。 而我們回去 develop
分支,Git會將工作目錄回復上次提交的狀態(tài)晌畅,具體如何操作的善未可知但指。
這時候我們將剛剛提交的內(nèi)容 git push
到遠程倉庫中。
git push origin test:test
* [new branch] test -> test
新建了一個遠程倉庫抗楔,并將我們所提交的內(nèi)容添加到了遠程倉庫棋凳。我們在遠程倉庫中可以看到我們提交的內(nèi)容。 那么現(xiàn)在我們來合并下兩個分支连躏。
git checkout develop
git merge test
Updating ae291bd..56ff540
Fast-forward
test.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test.md
可以看到剩岳,在 develop
分支下加入了新的東西 test.md
就是我們剛提交的內(nèi)容。 那么遠程分支會不會有這個新東西呢反粥?觀察后發(fā)現(xiàn)卢肃,遠程分支是沒有 test.md
這個文件的疲迂。
git status
查看Git的狀態(tài)也沒有發(fā)現(xiàn) test.md
文件的信息才顿。 如果本地倉庫是有 test.md
文件的話,我們將本地倉庫推入遠程倉庫尤蒿,看看操作后遠程倉庫是否有該文件郑气。
git push origin develop:develop
push后發(fā)現(xiàn),遠程倉庫多出了一個 test.md
文件腰池,簡單的分支合并就完成了尾组。 那么問題來了,如果兩個分支同時操作 test.md
文件會發(fā)生什么事情呢示弓?
git add test.md
git commit -m 'test.md'
git checkout test
git add test.md
git commit -m 'test-test.md'
Auto-merging test.md
CONFLICT (content): Merge conflict in test.md
Automatic merge failed; fix conflicts and then commit the result.
我們修改兩個 test.md
給入不同數(shù)據(jù)讳侨,提交后,先在本地合并奏属。 系統(tǒng)提示跨跨,自動合并失敗,兩個文件有沖突,需要解決沖突后提交結(jié)果勇婴。
git add test.md
git commit -m 'test.md'
git push origin develop:develop
修改沖突后忱嘹,提交到遠程倉庫,這個時候兩個分支的數(shù)據(jù)就同步了耕渴。所以對于沖突拘悦,Git已經(jīng)幫我們做好解決方案了。