Git分支的定義和操作

abzzx123發表於2020-12-12

1.Git分支的定義

當你開發專案的時候,需要不同的版本,如果不想一直在一個專案裡邊做修改,這時候就可以使用分支。在不同分支上邊 開發可以相互不影響,需要的時候可以切換到不同的分支進行工作。同個小組不同的成員可以在不同的分支針對不同的功能進行開發,需要時進行分支合併即可。

2.Git分支的基本操作

2.1 分支的新建與合併
首先建立一個名為test的分支並切換到該分支:

$ git branch test
$ git checkout test

實現上述要求還有另外一種形式:

$ git checkout -b test

然後,我們可以檢視當前所在分支:git branch,前面帶*的為當前所在分支。接下來切換回master分支並將test合併:

$ git checkout master
$ git merge test

最後,兩個分支已經合併成功,將test分支刪除:

$ git checkout -d test

2.2 遇到衝突時的分支合併
有時候合併操作並不會如此順利。如果在不同的分支中都修改了同一個檔案的同一部分,Git 就無法乾淨地把兩者合到一起(譯註:邏輯上說,這種問題只能由人來裁決)。例如:如果你在開發的過程中同時在兩個分支修改了同個版本的a檔案,將得到類似下面的結果:

$ git merge test
    Auto-merging a
    CONFLICT (content): Merge conflict in a
    Automatic merge failed; fix conflicts and then commit the result.

Git 作了合併,但沒有提交,它會停下來等你解決衝突。要看看哪些檔案在合併時發生衝突,可以用 git status 查閱:

[master*]$ git status
    a: needs merge
    # On branch master
    # Changes not staged for commit:
    # (use "git add <file>..." to update what will be committed)
    # (use "git checkout -- <file>..." to discard changes in working directory)
    #
    # unmerged: a
    #

任何包含未解決衝突的檔案都會以未合併(unmerged)的狀態列出。Git 會在有衝突的檔案里加入標準的衝突解決標記,可以通過它們來手工定位並解決這些衝突。可以看到此檔案包含類似下面這樣的部分:

<<<<<<< HEAD:index.html
    “在分支test上的修改”
    =======
    “在分支master上的修改”
    >>>>>>> a

接下來,我們只要通過文字編輯器將衝突內容修改,修改完畢後重新提交即可。

相關文章