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



你可能感兴趣的:(git)