標籤: gitgit
有一次被人問到怎麼把一個分支的全部commit按一個commit合併到主分支上,當時一臉蒙B,平時開發都是直接merge,不多考慮到這種問題,因而特地搜索了相關資料。編輯器
其實在開發中,咱們永遠都是保留一個主master分支幹靜,咱們都是會從新拉一個dev分支作開發,遇到BUG就會拉BUG分支解決BUG,可是在分支上作開發和解決BUG不僅會有一個提交,而合併到主幹上也沒有必要讓別的開發看到冗餘的commit信息,其實別的開發只要須要看到這個分支是解決了什麼問題或者開發了什麼任務便可。.net
按普通的提交流程是:3d
git checkout master //切換回主分支 git pull //拉取master代碼 git merge dev //如無衝突就已經合併成功如遇衝突就解決衝突再提交代碼
若是想合併分支commit到主分支能夠按以下走法:code
git checkout master //切換回主分支 git pull //拉取master代碼 git merge dev --squash //如遇衝突就解決衝突 git commit -m "這裏是註釋"
原理就是--squash會把分支上的全部相對master分支的修改一次性推送到本地,這樣就能夠解決在master上只會看到一個提交了。blog
另外一種方法就是經過rebase來作合併commit再merge到master分支
1:假設當前在dev分支上,提交了二條commit修改,在dev分支上執行以下代碼開發
git rebase -i master
這時 git 會打開編輯器,你會看到 dev 分支上的 2 個最新 commit,以及一些指引提示
以下圖
get
每一個 commit 前有一個操做命令,默認是 pick ,表示該行被選中,須要進行 rebase 操做。下面一堆註釋的指引中還有幾個指令,咱們經常使用到的是如下 2 個it
git checkout master git merge dev
這樣就作到你一個commit提交到了主分支達到要求ast