解決github提PR,會出現之前的重複commit的問題
阿新 • • 發佈:2018-12-21
如何在github上正確的提交PR(記錄自己的坑)
本文章主要討論 向一個目標分支多次PR 導致 commit 疊加的問題
首先fork一個工程
這樣就會在你的主頁出現這個工程,like this:
然後我們要clone這個工程到本地(此處忽略配公鑰過程,度娘去),fork之後的程式碼庫我們稱作 原始碼庫
從源分支中建立新分支
根據你要修改的版本分支確定源分支
你要針對哪個版本提PR,那個版本所在分支就是你要作為源分支的分支
本文章主要討論的 坑 是多次針對同一個分支提PR並且之前的PR還沒有被merge的情況!
建立分支
git branch -a //檢視專案所有分支 git checkout origin/2.0 //切換到你所選擇的源分支,視情況而定 git checkout -b yourbranch //在源分支上新建你所要提PR的分支,每一個PR要新建一個分支
修改程式碼commit並push
正常操作沒啥好說的
git diff --name-only //檢視修改了哪些
git add filename //新增要提交的修改的檔案
git commit -m 'commit info' //建立commit
git push //呵呵第一次是不是美滋滋等會兒就有你爽的了(你沒看錯,我也沒寫錯)
這時候返回到github,開啟你fork的工程,你會發現已經他已經智慧的發現了你得提交,並詢問你是否要提交PR
此處無圖,視力正常的應該都能看到。。。會有一個綠色的pull request的按鈕,點他!就會進入了編輯PR介面
這裡可以看到你得commit只有一個,非常正確
當你再次重複這一過程就會發現commit竟然疊加了!沒錯,疊加了
之前的commit也存在
這可真叫人頭大。
解決方法
在回到源分支新建分支之前進行如下操作
git log //檢視commit資訊,這時候你會發現head停留在你最後一次commit上,這就是問題的原因 git reset head --hard //找到最原始的head的commitID 然後reset head --hard !!! git checkout -b yourbranch //新建你得分支,這樣head資訊才正確 //修改程式碼,提commit git push -f //最後一步重中之重,強制提交,不用擔心之前的commit會不會消失,親測只要pr提上去就不會消失!!
最正確的做法應該是這樣
//在每次提完PR之後,checkout到源分支上reset head,再push -f
git checkout origin/2.0 //我得源分支
git log //檢視最初的head
git reset commitId --hard //強制reset
git push -f //強制提交
這樣就能確保每次下次新建分支head與上次的完全沒影響!