git分支管理

本地分支管理

創(chuàng)建和切換分支

創(chuàng)建分支

在本地終端運(yùn)行?git branch『分支名稱』?新建一個(gè)分支,如新建一個(gè)名為『learn-branch』的分支命令如下:

python

$ git branch learn-branch

切換分支

創(chuàng)建完分之后使用git branch命令查看分支:

python

$ git branch

* master

? learn-branch

可以看到『 master 』分支上有一個(gè)『*』,說明當(dāng)前是處在『 master 』分支上,也就是說創(chuàng)建完分支后需要我們手動(dòng)切換到『learn-branch』,使用git checkout 『分支名稱』命令:

python

$ git checkout learn-branch

Switched to branch 'learn-branch'

再使用git branch命令查看,會(huì)發(fā)現(xiàn)已經(jīng)切換到『learn-branch』分支:

python

$ git branch

* learn-branch

? master

創(chuàng)建和切換分支兩條命令可以合起來,使用git checkout -b『分支名稱』命令可以創(chuàng)建一個(gè)分支并切換到此分支上。

合并分支

快進(jìn)模式合并

快進(jìn)式合并分支,也叫『Fast Foreword』,簡(jiǎn)單的理解就是當(dāng)要合并的分之和目標(biāo)分支之間沒有沖突,只是多做了一些修改時(shí)就會(huì)采取『Fast Foreword』模式

例如,我們切換到新建的『learn-branch』分支上,對(duì)『learn-git.txt 』文件加一行文字:

I am learning to use git.

然后提交此文件:

$git add learn-branch.txt

$git commit -m "edit learn-git.txt"

[learn-git fce6c4e] branch test

? 1 files changed, 1 insertions(+)

接著使用$ git checkout master命令切換回『 master 』分支,再查看『learn-git.txt 』文件,發(fā)現(xiàn)剛才添加的內(nèi)容并不存在!因?yàn)槟莻€(gè)提交是在『learn-branch』分支上,而『 master 』分支此刻的提交點(diǎn)并沒有變。

現(xiàn)在,我們把『learn-branch』分支的內(nèi)容合并到『 master 』分支上:

$ git merge learn-branch

Updating ca62ea0..fce6c4e

Fast-forward

? learn-branch.txt | 1 +

? 1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到當(dāng)前分支,示例中是把指定分支『learn-branch』合并到『 master 』分支上。

合并完成后會(huì)發(fā)現(xiàn)『 master 』分支上的『learn-git.txt 』文件內(nèi)容和在『learn-branch』分支上編輯后的內(nèi)容完全一樣。此時(shí)如果想刪除『learn-branch』分支,可以使用命令$ git branch -d 『分支名稱』。

普通模式合并

當(dāng)要合并的分之和目標(biāo)分支之間存在沖突,就無法使用快進(jìn)合并模式,需要先手動(dòng)解決沖突,再提交。

例如,我們先切換到『learn-branch』分支,在『learn-git.txt 』文件中寫入下面文字并提交

I am on "learn-branch" branch.

然后切換到『 master 』分支,在『learn-git.txt 』文件中寫入下面文字并提交

I am on "master" branch.

接著輸入git merge learn-branch命令:

$ git merge learn-branch

? Auto-merging learn-branch.txt

? CONFLICT (content): Merge conflict in learn-git.txt

? Automatic merge failed; fix conflicts and then commit the result.

Git 返回結(jié)果提醒我們『learn-git.txt 』文件存在沖突,需要我們手動(dòng)解決沖突。運(yùn)行?git status?命令,也可以看到出現(xiàn)沖突狀況:

$ git status

On branch master

You have unmerged paths.

? (fix conflicts and run "git commit")

Unmerged paths:

? (use "git add ..." to mark resolution)

? ? ? both modified:? ? ? learn-git.txt

no changes added to commit (use "git add" and/or "git commit -a")

現(xiàn)在我們打開『learn-git.txt 』,會(huì)發(fā)現(xiàn) Git 加入了沖突解決標(biāo)記:

? <<<<<<< HEAD

? I am on master branch

? =======

? I am on learn-branch branch

? >>>>>>> learn-branch

可以看到 ======= 隔開的上半部分,是 HEAD(即 master 分支,在運(yùn)行 merge 命令時(shí)的工作分支)中的內(nèi)容,下半部分是在 learn-branch 分支中的內(nèi)容。解決沖突的辦法無非是二者選其一或者人工親自整合到一起。把上述內(nèi)容修改為這樣:

I am on master branch

接下來運(yùn)行?git add?來告訴 Git 沖突已經(jīng)解決,并運(yùn)行?git commit?來完成合并:

$git add learn-git.txt

$git commit -m "conflict resolved"

[master cadd265] conflict resloved

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 創(chuàng)建與合并分支 在Git里每次提交會(huì)被串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支.而HEAD是指向當(dāng)前分支,當(dāng)前...
    程序員七哥閱讀 615評(píng)論 0 5
  • 沖突合并 創(chuàng)建分支feature1分支,在feature1中修改readme文件,然后在分支中添加并提交, $gi...
    奮斗中的Kevin閱讀 708評(píng)論 0 1
  • 前言 這篇文章是我16年4月寫的,當(dāng)時(shí)發(fā)布在CSDN上。被Git知識(shí)庫收錄。鏈接:http://blog.csdn...
    aroundme閱讀 2,337評(píng)論 1 14
  • 分支在實(shí)際中有什么用呢?假設(shè)你準(zhǔn)備開發(fā)一個(gè)新功能,但是需要兩周才能完成,第一周你寫了50%的代碼,如果立刻提交,由...
    八寶君閱讀 375評(píng)論 0 0
  • 1. 納什均衡:想要達(dá)到共贏,我們就要付出代價(jià),想如何才能抓住員工的心,多做銷售,月底工資高才是最終的目的! 2....
    Ding欣欣閱讀 116評(píng)論 0 0

友情鏈接更多精彩內(nèi)容