[轉] git merge 將多個commit合并為一條之--squash 選項

來源:互聯網
上載者:User

標籤:方式   本地   magic   改進   message   移動   odi   bsp   code   

[FROM] 80333645

 

1.一般的做法(直接git merge)

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

$ git merge another$ git checkout another# modify, commit, modify, commit ...$ git checkout master$ git merge another

 

2.改進版本:合并多個提交為一條(git merge --squash branchname)

但是,操作方便並不意味著這樣操作就是合理的,在某些情況下,我們應該優先選擇使用--squash選項,如下:

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

 

--squash含義和原理如下:

--squash選項的含義是:本地檔案內容與不使用該選項的合并結果相同,但是不提交、不移動HEAD,因此需要一條額外的commit命令。其效果相當於將another分支上的多個commit合并成一個,放在當前分支上,原來的commit曆史則沒有拿過來。

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

如果在開發分支上提交非常隨意,甚至寫成微博體,那麼一定要使用--squash選項。版本歷程記錄的應該是代碼的發展,而不是開發人員在編碼時的活動。

只有在開發分支上每個commit都有其獨自存在的意義,並且能夠編譯通過的情況下(能夠通過測試就更完美了),才應該選擇預設的合并方式來保留commit曆史。

 

3.實驗:

1.master分支上只有一個檔案1.txt

2.切出一個feature-squash分支,並且進行3次提交

3.將feature-squash分支用 --squash選項merge到master分支,可以看出merge玩,會提示:做一次提交

新的提交日誌是"執行 git merge --squash feature-squash" 

4.查看master分支,發現將squash上多次提交合并為依次提交了

4.思路總結:

1.  dev  "1.txt"   

2. dev_jn   "1.txt"       此外另做3次相當於開發了新的功能,分別提交記錄是:  "2.txt"   "3.txt"   "4.txt"

3.將dev_jn上的"2.txt"、"3.txt"、"4.txt"  3個提交合并成大的commit提交記錄 "squash merge"一次提交;

4.查看dev提交記錄,只有 "1.txt"、"squash merge" 這2個提交記錄,從而保證dev上提交記錄的乾淨性.

 

[轉] git merge 將多個commit合并為一條之--squash 選項

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.