在 版本回退 裡,你已經知道,每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。一開始的時候,master分支是一條線,git用master指向最新的提交,再用head指向master,就能確定當前分支,以及當前分支的提交點:
image.png
每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長:
當我們建立新的分支,例如dev時,git新建了乙個指標叫dev,指向master相同的提交,再把head指向dev,就表示當前分支在dev上:
image.png
你看,git建立乙個分支很快,因為除了增加乙個dev指標,改改head的指向,工作區的檔案都沒有任何變化!
不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次後,dev指標往前移動一步,而master指標不變:
image.png
假如我們在dev上的工作完成了,就可以把dev合併到master上。git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併:
image.png
所以git合併分支也很快!就改改指標,工作區內容也不變!
合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指標給刪掉,刪掉後,我們就剩下了一條master分支:
image.png
真是太神奇了,你看得出來有些提交是通過分支完成的嗎?
下面開始實戰。
首先,我們建立dev分支,然後切換到dev分支:
$ git checkout -b devswitched to a new branch 'dev'
git checkout命令加上-b引數表示建立並切換,相當於以下兩條命令:
$ git branch dev$ git checkout devswitched to branch 'dev'
然後,用git branch命令檢視當前分支:
$ git branch
* dev
master
creating a new branch is quick.
然後提交:
$ git add readme.txt $ git commit -m "branch test"
[dev fec145a] branch test
1 file changed, 1 insertion(+)
現在,dev分支的工作完成,我們就可以切換回master分支:
$ git checkout masterswitched to branch 'master'
切換回master分支後,再檢視乙個readme.txt檔案,剛才新增的內容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點並沒有變:
image.png
現在,我們把dev分支的工作成果合併到master分支上:
$ git merge devupdating d17efd8..fec145afast-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 devdeleted branch dev (was fec145a).
刪除後,檢視branch,就只剩下master分支了:
$ git branch
* master
因為建立、合併和刪除分支非常快,所以git鼓勵你使用分支完成某個任務,合併後再刪掉分支,這和直接在master分支上工作效果是一樣的,但過程更安全。
小結檢視分支:
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...