幾乎所有的版本控制系統都以某種形式支援分支。 使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。 在很多版本控制系統中,這是乙個略微低效的過程——常常需要完全建立乙個源**目錄的副本。對於大專案來說,這樣的過程會耗費很多時間。
分支管理
每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。
一開始的時候,master分支是一條線,git用master指向最新的提交,再用head指向master,就能確定當前分支,以及當前分支的提交點.
建立分支命令:
git branch
(branchname)
切換分支命令:git checkout
(branchname)
當你切換分支的時候,git 會用該分支的最後提交的快照替換你的工作目錄的內容, 所以多個分支不需要多個目錄。
合併分支命令:
git merge
你可以多次合併到統一分支, 也可以選擇在合併之後直接刪除被併入的分支。
開始前我們先建立乙個測試目錄:
$ mkdir gitdemo
$ cd gitdemo/
$ git init
initialized empty git repository...
$ touch readme
$ git add readme
$ git commit -m '第一次版本提交'
[master
(root-commit)
3b58100] 第一次版本提交
1 file changed,
0insertions(+
),0deletions(-
) create mode 100644
readme
列出分支
列出分支基本命令:
git branch
沒有引數時,git branch 會列出你在本地的分支。
$ git branch
* master
此例的意思就是,我們有乙個叫做 master 的分支,並且該分支是當前分支。
當你執行 git init 的時候,預設情況下 git 就會為你建立 master 分支。
如果我們要手動建立乙個分支。執行 git branch (branchname) 即可。
$ git branch dev
$ git branch
* master
dev
現在我們可以看到,有了乙個新分支 dev。
git checkout命令加上-b引數表示建立並切換,相當於以下兩條命令:
$ git branch dev
$ git checkout dev
switched 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 b17d20e] branch test
1 file changed,
1insertion(+
)
現在,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,
1insertion(+
)
git merge命令用於合併指定分支到當前分支。合併後,再檢視readme.txt的內容,就可以看到,和dev分支的最新提交是完全一樣的。
合併完成後,就可以放心地刪除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 分支原理介紹
git的工作原理 git版本控制是通過儲存不同時間點的快照實現的。git在提交操作時,git會儲存乙個提交物件,該提交物件中會包含 git的分支,其實本質上是指向提交物件的可變指標。由於建立分支的高效性,所以,git鼓勵開發人員建立分支!首先在建立git專案的時候,缺省會建立master分支!這個m...
Git 二 Git分支管理策略
如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管理軟體,分支操作實際上會生成乙份現...
Git 二 Git分支管理策略
如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管理軟體,分支操作實際上會生成乙份現...