1. 程式人生 > >解決github提PR,會出現之前的重複commit的問題

解決github提PR,會出現之前的重複commit的問題

如何在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與上次的完全沒影響!

如果有其他問題,歡迎與我交流 qq:240814476