首先git上現有乙個readme.txt檔案,存在如下一條主分支線:
master
/ c0 —- c1 —- c2 —- c3
master指向最近的一次提交(commit),即readme.txt的c3版本
readme.txt內容如下:
c0此時在git bash,輸入如下命令,新建乙個分支branch1,並切換到該分支下:c1 c2
c3
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內容如下:
c0branch1分支下的c5版readme.txt內容如下:c1 c2
c3
c0branch2分支下的c4版readme.txt內容如下:c1 c2
c3 in branch1
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...