git merge之squash

看CM源碼時,發現歷史記錄裏有不少squash,因而google瞭解了一下。git

Git相對於CVS和SVN的一大好處就是merge很是方便,只要指出branch的名字就行了,如:bash

1
2
3
4
5
$ git merge another
$ git checkout another
# modify, commit, modify, commit ...
$ git checkout master
$ git merge another

可是,操做方便並不意味着這樣操做就是合理的,在某些狀況下,咱們應該優先選擇使用--squash選項,以下:測試

1
2
$ git merge --squash another
$ git commit -m "message here"

--squash 選項的含義是:本地文件內容與不使用該選項的合併結果相同,可是不提交、不移動HEAD,所以須要一條額外的commit命令。其效果至關於將another分支上的多個commit合併成一個,放在當前分支上,原來的commit歷史則沒有拿過來。google

Note:編碼

判斷是否使用--squash選項最根本的標準是,待合併分支上的歷史是否有意義。spa

若是在開發分支上提交很是隨意,甚至寫成微博體,那麼必定要使用--squash選項。版本歷史記錄的應該是代碼的發展,而不是開發者在編碼時的活動。code

只有在開發分支上每一個commit都有其獨自存在的意義,而且可以編譯經過的狀況下(可以經過測試就更完美了),才應該選擇缺省的合併方式來保留commit歷史。blog

這裏是原文ci

相關文章
相關標籤/搜索