git squash 用法


在開發一個功能的時候會反復的提交代碼,會造成一個功能有很多次提交,在我們要向master做分支合並的時候,就會出現很多commits,在合並以后同一個功能的commits就會很多,導致我們無法清晰的知道這個功能關聯的commit有哪些,這個squash就是優化我們的commits信息,讓我們的版本倉庫看起來簡潔明了,功能點一目了然:
使用比較簡單,比如我想將本地開發分支的內容合並到master主線分支上,並且期望將一個功能的所有提交壓縮成一個commit;

1. 先checkout master分支並做本地分支和遠程倉庫同步

git checkout master
git pull

(一定要做同步,若本地代碼和遠端倉庫不同步的話,就會出現很多遠端的修改進入我們的squash時的commits當中)

2. 切換到開發分支 dev , 並執行commits合並操作

git checkout dev
git rebase -i master
 # 執行上面的語句后,會進入以下編輯界面
 pick xxx: commit1 add : add xxx 
 pick xxx: commit2 fix: update xxxx
 pick xxx: commit3 fix: delete xxx
 pick xxx: commit4 modify : update xxxx 
# 進入編輯模式,將除第一行的pick外,其余的pick都改成 squash ,退出編輯模式,保存即可
 pick xxx: commit1 add : add xxx 
 squash xxx: commit2 fix: update xxxx
 squash xxx: commit3 fix: delete xxx
 squash xxx: commit4 modify : update xxxx 

3. 以上操作順利的話,我們執行以下操作即可:

git push -f
注意:squash操作后你的提交信息就變成了一次提交,會記錄你之前的提交的描述信息,但是已經看不到相關的提交記錄了;

4. 看了資料以后,git 在merge的時候提供了這種squash merge的操作方式,未有實踐,這里也做個記錄:

git checkout master
git merge --squash dev

這樣可以在master節點上只看到一個提交,不管你在dev分支上有多少次提交


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM