在版本回退裡,你已經知道,每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master
分支。head
嚴格來說不是指向提交,而是指向master
,master
才是指向提交的,所以,head
指向的就是當前分支。
一開始的時候,master
分支是一條線,git用master
指向最新的提交,再用head
指向master
,就能確定當前分支,以及當前分支的提交點:
每次提交,master
分支都會向前移動一步,這樣,隨著你不斷提交,master
分支的線也越來越長:
當我們建立新的分支,例如dev
時,git新建了乙個指標叫dev
,指向master
相同的提交,再把head
指向dev
,就表示當前分支在dev
上:
你看,git建立乙個分支很快,因為除了增加乙個dev
指標,改改head
的指向,工作區的檔案都沒有任何變化!
不過,從現在開始,對工作區的修改和提交就是針對dev
分支了,比如新提交一次後,dev
指標往前移動一步,而master
指標不變:
假如我們在dev
上的工作完成了,就可以把dev
合併到master
上。git怎麼合併呢?最簡單的方法,就是直接把master
指向dev
的當前提交,就完成了合併:
所以git合併分支也很快!就改改指標,工作區內容也不變!
合併完分支後,甚至可以刪除dev
分支。刪除dev
分支就是把dev
指標給刪掉,刪掉後,我們就剩下了一條master
分支:
真是太神奇了,你看得出來有些提交是通過分支完成的嗎?
下面開始實戰。
首先,我們建立dev
分支,然後切換到dev
分支:
$ git checkout -b dev
switched to a new branch 'dev'
git checkout
命令加上-b
引數表示建立並切換,相當於以下兩條命令:
$ git branch dev
$ git checkout dev
switched to branch 'dev'
然後,用git branch
命令檢視當前分支:
$ git branch
* dev
master
git branch
命令會列出所有分支,當前分支前面會標乙個*
號。
creating a new branch is quick.
然後提交:
$ git add readme.txt
$ git commit -m "branch test"
[dev b17d20e] branch test
1 file changed, 1 insertion(+)
現在,dev
分支的工作完成,我們就可以切換回master
分支:
$ git checkout master
switched to branch 'master'
切換回master
分支後,再檢視乙個readme.txt檔案,剛才新增的內容不見了!因為那個提交是在dev
分支上,而master
分支此刻的提交點並沒有變:
現在,我們把dev
分支的工作成果合併到master
分支上:
$ git merge dev
updating d46f35e..b17d20e
fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用於合併指定分支到當前分支。合併後,再檢視readme.txt的內容,就可以看到,和dev
分支的最新提交是完全一樣的。
注意到上面的fast-forward
資訊,git告訴我們,這次合併是「快進模式」,也就是直接把master
指向dev
的當前提交,所以合併速度非常快。
當然,也不是每次合併都能fast-forward
,我們後面會講其他方式的合併。
合併完成後,就可以放心地刪除dev
分支了:
$ git branch -d dev
deleted branch dev (was b17d20e).
刪除後,檢視branch
,就只剩下master
分支了:
$ git branch
* master
因為建立、合併和刪除分支非常快,所以git鼓勵你使用分支完成某個任務,合併後再刪掉分支,這和直接在master
分支上工作效果是一樣的,但過程更安全。
git鼓勵大量使用分支:
檢視分支:git branch
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
合併某分支到當前分支:git merge
刪除分支:git branch -d
Git建立分支與合併分支
首先,我們建立dev分支,然後切換到dev分支 git checkout b dev 建立dev分支並同時切換到dev分支 switched to a new branch dev git checkout命令加上 b引數表示建立並切換,相當於以下兩條命令 git branch dev git ch...
git建立分支與合併分支
第一步 建立分支 git branch my branch 建立分支my branch 第二步 在自己的分支上進行操作,git status 檢視當前哪些檔案進行了修改,將本地修改的 推送到暫存區 git checkout my branch 切換到自己分支 git status 檢視當前修改了哪些...
Git 建立與合併分支
現在我們可以把dev分支上的內容合併到分支master上了,可以在master分支上,使用如下命令 git merge dev 如下所示 git merge命令用於合併指定分支到當前分支上,合併後,再檢視readme.txt內容,可以看到,和dev分支最新提交的是完全一樣的。注意到上面的fast f...