git 分支學習

2021-07-04 15:38:16 字數 2419 閱讀 4613

首先git上現有乙個readme.txt檔案,存在如下一條主分支線:

master

/ c0 —- c1 —- c2 —- c3

master指向最近的一次提交(commit),即readme.txt的c3版本

readme.txt內容如下:

c0

c1 c2

c3

此時在git bash,輸入如下命令,新建乙個分支branch1,並切換到該分支下:

git branch branch1 #建立新分支branch1

git checkout branch1 #切換到分支branch1下

還可以用另一種方式建立並切換乙個新分支下branch2

git checkout master #切換到master下建立新分支

git checkout -b branch2 #建立並切換到分支branch2下

建好後檢視當前分支:

git branch
輸出出結果如下:

branch1

*branch2

master

其中branch2前有*標出,代表我們當前所處分支位置為branch2

這時,前面分支圖實際上變成了:

master

/ c0 —- c1 —- c2 —- c3——branch1

\ branch2

這時候什麼都沒幹就已經有了三個分支,接下來這幾個分支會發揮什麼樣的作用呢?

現在既然在分支branch2下,就在branch2下用vi 在readme.txt檔案中加入一句內容:

in branch2

這時分別用git checkout 命令切換到master和branch1分支下(有時會有提示資訊不讓切換,如果能切換時)可以檢視readme.txt 檔案會發現這兩個分支下的readme.txt也加上了「in branch2」這句話,為什麼在branch2下修改的檔案也會影響到master和branch1了呢?

這是因為此時的修改改的是工作區中的檔案,即本地檔案readme.txt,這份在branch2下的修改並未提交(commit),只要不提交,工作區的變化還不能關聯任何乙個分支指標,此時master、branch1、branch2三個分支指標實際上還是都指向readme.txt的最近一次提交c3版,工作區中的變化和在哪個分支沒有關係。分支指標只指向該分支下的最近一次提交(commit),與提交有關係。

既然提交就可以了,那把在branch2下的修改切換到branch3下進行提交可以嗎?不可以,在branch2下發生修改未提交時,在branch3下也能看到,如果在branch3下提交就變成branch3跟蹤下變化的版本了。

在branch2下使用下列命令提交修改「in branch2」:

git add readme.txt #將修改記錄在暫緩區

git commit -m "change message:in branch2" #將暫緩區的修改全部提交

這時,如果在git checkout 到各個分支下檢視就會發現,只有branch2 下的readme.txt裡多了一句「in branch2」了,此時分支圖已經變成了:

master

/ c0 —- c1 —- c2 —- c3——branch1

\ c4—-branch2

這裡的c4就是最新提交的」change message:in branch2」 那一版。

參照上面的操作,git checkout 切換到branch1 下,也對readme.txt 進行修改,新增一句「in branch1」,並提交,此時分支圖就成了:

master

/ c0 —- c1 —- c2 —- c3 —- c5——branch1

\ c4—-branch2

此時readme.txt在三個分支下有三個版本,

master分支下的c3版readme.txt內容如下:

c0

c1 c2

c3

branch1分支下的c5版readme.txt內容如下:

c0

c1 c2

c3 in branch1

branch2分支下的c4版readme.txt內容如下:

c0

c1 c2

c3 in branch2

參考

git merge 合併分割槽詳解

git 教程

Git分支學習

常見的分支操作命令 建立與合併分支 每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。剛開始的時候,只有一條分支,在git中,這條分支是主分支,叫做master分支。分支本質上是指向某個提交物件的動態指標。剛開始,master分支是一條線,git用master指向最新的提交,再用hea...

git學習 分支

分支就是科幻電影裡面的平行宇宙,當你正在電腦前努力學習git的時候,另乙個你正在另乙個平行宇宙裡努力學習svn。如果兩個平行宇宙互不干擾,那對現在的你也沒啥影響。不過,在某個時間點,兩個平行宇宙合併了,結果,你既學會了git又學會了svn!分支在實際中有什麼用呢?假設你準備開發乙個新功能,但是需要兩...

Git分支學習

詳細可以參考個人部落格 git分支學習 git clone 這個git路徑是無效的,示例而已git branch all預設有了dev和master分支,所以會看到如下三個分支 master 本地主分支 origin master 遠端主分支 origin dev 遠端開發分支 新轉殖下來的 預設m...