Git 教程 四 分支原理

2021-09-02 18:00:02 字數 2893 閱讀 1057

我們在git 教程(二)的git log列印當中會看見一共三次提交,並且第三次提交的末尾出現head->master的字元,並且我們使用git reset回退的時候,會發現head->master也跟著指向你回退的那個版本末尾,由此,我們可以推斷出git分支的乙個操作流程:

git分支操作流程.png

其中幾次提交就是每次的commit,master是指向提交物件的可變指標,而head是乙個比較特殊的指標,指向master這種指標的指標。總的來講,就是master指向了提交物件,head指向了master這個指標。其中master分支並不是一條特殊的分支,只是master是在git init時預設的一條分支,大家懶得改動而已。

git branch + 分支名//新建

git branch.png

末尾的master表示當前分支是哪個分支,mater即是顯示當前分支是master分支。

建立分支原理.png

如圖:出現了testing這個指標指向了最後一次提交,但是head並沒有指向testing,所以當前分支還是master分支。

git checkout +分支名//切換

末尾的master變成了testing,表示已經從master分支切換到了testing分支。

切換分支原理.png

git checkout -b 分支名//新建並且切換,這裡就不多解釋了。

當然,在新建過後我我們可以通過git log --oneline --decorate命令檢視分支所指的提交物件,會發現指向的物件都是一樣的。

現在,我們已經切換到了testing分支上,我們可以在tesing分支上對檔案進行了乙個操作,然後通過git add,git commit進行跟蹤提交,

分支操作原理.png

如果對分支進行了乙個操作,那麼testing指向了第四次提交,但是master依舊停留在第三次提交,也就說如果切換到了master分支,那麼檔案上面顯示的內容就是第三次提交顯示的內容而不是第四次提交的內容。使用git log可以很明顯的看出。

當我們切換到master並且對master分支進行操作的話原理圖就成了這樣子:

我們可以使用git log --oneline --decorate --graph --all來檢視分支情況:

分支情況.png

在圖上可以看到,在b60313e的時候分成了兩個支線,然後在0933db4進行了乙個合併。

在分支操作完過後我們得進行乙個合併,這樣才算是完成了乙個完整的專案吧。假設我們要合併到master分支,首先我們切換到master分支,然後使用git merge進行乙個合併。

分支合併原理.png

在分支合併的時候我們有可能會遇到衝突,顯示衝突的時候會出現<<<<<<< head,*****==,>>>>>>>這表示 head所指示的版本(也就是你的 master分支所在的位置,因為你在執行 merge 命令的時候已經檢出到了這個分支)在這個區段的上半部分(*****==的上半部分),而 iss53分支所指示的版本在 *****==的下半部分。為了解決衝突,你必須選擇使用由 *****==分割的兩部分中的乙個,或者你也可以自行合併這些內容。

合併衝突圖例.png

解決衝突過後add和提交,但是在提交的時候會報錯:fatal: cannot do a partial commit during a merge.意思是說在merge過程中不能作部分提交,這個時候使用命令列git commit -i [衝突檔名],就能夠成功提交了。

我們在合併過後會選擇刪除掉不需要的分支,不然分支多了不好管理,

分支刪除命令列: git branch -d +分支名

git branch -d .png

git brach:檢視所有分支

git branch -v:檢視所有分支最後一次提交物件

git branch --merged:檢視合併了的分支

git branch --no-merged:檢視未合併的分支

這裡就不在貼示例圖了,自己自行操作檢視,比較簡單。

一般來講,我們將master分支作為主分支,主要用於合併其他分支和發布版本,在實際開發中,我們將不同的任務分支出去,並行開發,開發完成過後再合併到主分支並且發布。

這篇完成了本地分支的乙個講解,下篇講解遠端分支,未完待續...

GIt入門學習 四 分支操作

檢視分支 git branch 新建分支 git branch 空格 分支名 切換分支 切換到已有分支 git checkout 空格 分支名若不存在該分支,切換並建立分支 git checkout b 空格 分支名 合併分支到主分支master 首先切換到主分支 git checkout mast...

實驗四 分支結構

1.本題要求編寫程式,輸入10個字元,統計英文本母 空格或回車 數字字元和其他字元的個數。2.有3個整數a b c,由鍵盤輸入,輸出其中最大的數。3.輸入乙個正整數n,再輸入n個學生的成績,計算平均分,並統計各等級成績的個數。成績等級分為五級,分別為a 90 100 b 80 89 c 70 79 ...

eclipse git拉取失敗 Git 四 分支

本文介紹git分支的使用方法 使用如下命令,會列出當前倉庫的所有分支,並在當前分支的分支名前用 標示 git branch新增 a 引數可以同時檢視,當前倉庫的所有分支及遠端倉庫的分支 git branch a在 git branch 命令後,新增乙個新的分支名,即可建立該分支 git branch...