一、分支管理策略:
通常,合併分支時,如果可以那就使用快速合併(fast forward),但是有一些分支在合併的時候儘管不能產生分支衝突但是也不能使用快速合併。
這個時候會在合併之後做一次新的提交,但是該模式下,刪除分支,會丟掉部分資訊。
1.例項:不能使用快速合併同時也不會產生分支衝突的情況:
1.建立並且切換到新分支,名字叫dev
git chieckout -b dev
2.在dev下建立乙個新的檔案code2.cpp,並且提交乙個新版本
subl code2.cpp
git add code2.cpp
git commit -m "提交dev中演示管理策略的檔案"
3.切換回master分支,修改code.cpp,並且提交新的版本
git checkout master
subl code.cpp
git add code.cpp
git commit -m "提交master中演示管理策略的檔案"
此時版本庫中兩條分支如下圖,
由於提交的不是對同乙個檔案的修改,所以不會產生衝突,當然快速合併是不適用的。
通過上面的操作,此時master和dev分支的模型大概如上圖:
2.接下來演示git merge dev後發生什麼:
合併分支:
git merge dev
執行分支合併後,出現下面的頁面:
因為不能使用快速合併,需要使用其他策略,並且會自動的為我們提交乙個新版本,所以我們需要在游標處輸入git自動提交新版本的說明,如下圖:
然後ctrl + x離開即可。
退出上述頁面後,實際上可以看到git使用的策略:recursive
king@ubuntu:~/mydir/test_git$ git merge dev
merge made by the 'recursive' strategy.
code2.cpp | 1 +
1 file changed, 1 insertion(+)
create mode 100644 code2.cpp
3.本次合併會在主分支上提交建立乙個新版本,這個提交是git自動幫我們做的,而版本說明就是上面頁面輸入的:
通過git log --pretty=oneline 檢視提交的版本歷史
1. master中演示策略 和 dev提交演示策略 是我們親自建立提交的
2. 而最上面,合併的一種策略 是git在合併的時候自動建立並提交的新版本
版本說明資訊實在輸入git merge dev 命令後來的的頁面框內輸入的,上面有說到。
二、禁用快速合併模式:有的時候,即使可以使用快速合併,但是希望禁止掉該怎麼做:
例項:
1.建立並且切換到乙個新的分支dev中
git checkout -b dev
2.修改檔案並且做一次提交
git add code.cpp
git commit
3.切換回master分支
git checkout master
4.合併dev合併(正常情況會進行快速,我們這裡見禁用快速合併)
git merge --no-ff -m "禁用快速合併"
(-m 同樣是版本說明)
因為禁用快速合併後,git也會自動的建立並提交乙個新版本。
git實踐系列六 分支
git強大之處就是分支的快速切換,那麼分支怎麼理解呢?git 中的分支,其實本質上僅僅是個指向 commit 物件的可變指標。git 會使用 master 作為分支的預設名字。在若干次提交後,你其實已經有了乙個指向最後一次提交物件的 master 分支,它在每次提交的時候都會自動向前移動。摘自git...
廖雪峰Git學習日記(六) 分支管理
目錄 一 建立並切換到新的dev分支,可以使用兩種方式 二 切換到已有的master分支,可以使用兩種方式 三 把dev分支的工作成功合併到master分支上 四 刪除dev分支 五 檢視分支情況 小結 git merge dev git branch d dev git branchgit鼓勵大量...
git 六 分支的建立與合併
在版本回填退里,已經知道,每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。首先,我們來建立d...