讓處女座、強迫症患者更舒服的 Git 合併

韓槑槑發表於2018-04-13

起因

首先先給大家看下我們公司一個專案的功能開發分支。
file
從左邊生命線可以看到好多好多的合併記錄。
再給大家看看我們公司的 master 的分支。
file
處女座有沒有感覺到很舒服啊。

因為我們的老大是處女座,所以他很強迫的不想看到 Merge 這種無用的 commit。 :expressionless:

So,讓我們來了解下如何在分支合併後更加美觀。

讓我們先來了解下常用分支合併步驟。

1.先建立一個測試用的倉庫。
file
2.建立一個分支進行修改並提交。
file
3.發起合併請求。
file
此時,我以前都是通過點選合併按鈕來確認合併就 OK 了。
在 Github 中則是一個 Merge pull request 的按鈕在下方。
如果是有衝突的話。
則通過如下方式進行衝突解決併合並。

git pull origin test
vim 衝突檔案
git add -A
git commit -m ""
git push origin master

4.檢視結果
此時在提交欄中就會顯示一個灰色的 Merged 合併記錄。
file
顯然,當合並次數越來越多時。
提交欄中的記錄就會像上方我的開發分支截圖一樣越來越多,越來越複雜。

建立乾淨、美觀、適合處女座的合併記錄

1.切換回 master 並更新,在建立新的分支。
file
2.修改提交併發起合併。
file
這裡的 git rebase master 是為了保持與 master 的更新並處理衝突。
這樣 master 在合併時就不會產生衝突。 (這一步非常重要)

file
3.通過 rebase 合併分支。

git checkout master  
git fetch --all --tags  
git merge origin/master  
git rebase origin/master  
git push origin master  

file
在該操作中可能會有衝突(因為篇幅原因就不贅述了)。
4.檢視結果
file

最後

圖片有點多,非常抱歉。
還是想問各位有沒有覺得很舒服呢? :laughing:
然後在上方的命令當中穿插了很多。

git checkout master  
git fetch --all --tags  
git merge origin/master  

是為了更新master分支。
git pull 本質就是 git fetch + git merge
由於篇幅原因。
rebase 中的原理就由大家自己去百度吧。

相關文章