05 分支管理 —— 分支管理策略

05 分支管理 —— 分支管理策略

分支管理策略

一般合併分支時,可能Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。git

若是要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就能夠看出分支信息。學習

下面咱們實戰一下--no-ff方式的git merge.net

首先,仍然建立並切換dev分支:code

lwenhaodeMacBook-Pro:TestGit lwenhao$ git checkout -b dev
Switched to a new branch 'dev'
lwenhaodeMacBook-Pro:TestGit lwenhao$

修改README.md文件blog

lwenhaodeMacBook-Pro:TestGit lwenhao$ cat README.md 
# TestGit

建立一個"dev"分支,我來操做。

學習分支管理策略。

lwenhaodeMacBook-Pro:TestGit lwenhao$

而且提交:開發

lwenhaodeMacBook-Pro:TestGit lwenhao$ git add README.md 
lwenhaodeMacBook-Pro:TestGit lwenhao$ git commit -m "add 學習"
[dev 8faa495] add 學習
 1 file changed, 2 insertions(+)
lwenhaodeMacBook-Pro:TestGit lwenhao$

如今切換回masterget

lwenhaodeMacBook-Pro:TestGit lwenhao$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)
lwenhaodeMacBook-Pro:TestGit lwenhao$

準備合併dev分支,請注意--no-ff參數,表示禁用Fast forwardit

lwenhaodeMacBook-Pro:TestGit lwenhao$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 README.md | 2 ++
 1 file changed, 2 insertions(+)
lwenhaodeMacBook-Pro:TestGit lwenhao$

由於本次合併要建立一個新的commit,因此加上-m參數,把commit描述寫進去。io

合併後,咱們用git log看看分支歷史:ast

lwenhaodeMacBook-Pro:TestGit lwenhao$ git log --graph --pretty=oneline --abbrev-commit
*   afd1966 (HEAD -> master) merge with no-ff
|\  
| * 8faa495 (dev) add 學習
|/  
*   615c264 conflict fixed
|\  
| * 8b01682 update readme.md
* | 426ee67 add 我要提交
|/  
* fca856d branch test
* 38e1bd3 (origin/master, origin/HEAD) Initial commit
lwenhaodeMacBook-Pro:TestGit lwenhao$

分支策略

在實際開發中,咱們應該按照幾個基本原則進行分支管理:

首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;

你和你的小夥伴們每一個人都在dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。

因此,團隊合做的分支看起來就像這樣:

合併分支時,加上--no-ff參數就能夠用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併,而fast forward合併就看不出來曾經作過合併。

繼續閱讀:06 分支管理 —— Bug分支

相關文章
相關標籤/搜索