1. 程式人生 > >github標準pull request提交流程

github標準pull request提交流程

普通的git提交命令用的很熟練了,但是相對參與的github開源專案不多,偶爾參與一個提交pull request,還真的應付不過來。

總結一下,方便以後使用。

1、fork開源專案的分支。


2、這時候自己的專案裡面多了一個工程。這個工程是原專案的拷貝,你可以在這個專案裡面做任意你所需要的修改,因為修改的只是一個拷貝工程,所以不會影響原專案。

流程:選擇Clone or download,拷貝連結,

使用命令:git clone xxx(連結)到本地。這個專案就是上面所說的專案拷貝。

3、這時候我們就會有需求了。如果我們fork的專案有更新怎麼辦呢?我們拷貝的只是一個原版,後面更新的內容自然是沒有的。

如果你說重新再fork這個專案的話,自然也是沒有問題的,只不過這樣是不是有點太low了,而且如果我們在fork的專案裡面做了改動呢?

解決方式是新增遠端分支:

git remote add upstream https://github.com/alibaba/freeline //新增遠端分支,upstream名字自定義

git fetch upstream//拉取遠端分支。

切換到想要更新的目錄,合併分支

git merge upstream/master   //把遠端分支的master分支合併到當前分支,這樣遠端專案中的修改就合併到了本地。

4、最後,我們的需求是修改了內容,想要合併到人家的分支上了。

一般來說,別人合併分支是希望有一個乾淨的提交,即如圖這樣的提交。自己的commit基於遠端專案最新commit之後。


所以目前比較推薦的做法是新建立一個分支,拉取fork專案的最新程式碼,但是把自己的提交cherry-pick到這個分支上。最後push到自己的fork專案中,最後申請pull request。

流程:

git checkout -b mmmmm_master upstream/master//建立新分支,並指向fork專案的master分支

git checkout mmmm_master//切換到原有的分支中,這個分支中儲存著我們修改的內容的commit。

git log//檢視commit,copycommit

git checkout mmmmm_master//切換回新分支

git cherry-pick 0b0eadf36e22e6f682c852458a379b0acd93cdf2//把提交拉取到新分支

git branch -vv//檢視一下分支對應情況,確保push的分支指向是對的。


git push origin mmmmm_master//推送分支到自己fork的專案中。

最後一步,開啟網站,切換到最新分支,點選New pull request,填寫內容,申請就好了。


收尾工作:

我們提交了之後這個分支其實就沒有什麼用處了。我們可以刪掉這個分支:

git push origin :mmm_master