git pull request
当我们要给一个项目添加代码,但是它的主分支master不允许修改时,或者非此项目中的开发人员,想贡献代码。这个时候,最好的方式就是pr
–pull request
什么是pull request
可能每个人对这个词都有不一样的理解。表面上看,像是一个pull
请求,但是实际中,是我们请求别人pull
。这样理解可能不是很正确。我们来一个通俗易懂的方式来解释下。
我们在生活中经常需要去修改任务或者代码。当我们把别人的文档拿过来修改,这个是
clone
或者是fork
。
我们把修改的内容添加注释,这相当于commit
。
之后我们会把我们的修改提交,这个就是push
。
然后我们会告诉文档的所有人,修改好了,拿去吧,这个就是pull request
。
至于文档最后的结果,如果他合并了就是merge
,没有合并,我们的pull request
会被关闭。
如何发起pull request
- 先fork别人的仓库,相当于拷贝一份到你的GitHub上,一般都不会有人让你直接动
master
的 clone
到本地分支,做一些bug fix- 发起
pull request
给原仓库,让它看到你的修改 - 原仓库
review
这个bug
,如果是正确的话,就会merge
到他自己的项目中
至此,整个 pull request
的过程就结束了。
注意事项
1. 给fork配置远程库
- 查看远程状态
git remote -v
- 确定一个将被fork的远程仓
git remote add upstream https://github.com/XXX.git
- 再次查看状态确认添加成功
2. 我们的pull request
的时候可能会遇到提示,落后10个提交
这个时候,我们需要先关闭我们的请求,直接提交,可能会产生冲突。我们需要在自己的本地更新到最新的代码,再提交。
- 从上游仓库fetch分支和提交点,提交给本地master,并会被存储在一个本地分支 upstream/master
git fetch upstream
- 切换到本地主分支(如果不在)
git checkout master
- 把
upstream/master
分支合并到本地master
上,这样就完成了同步,并且不会丢失本地修改的内容。
git merge upstream/master
- 更新到github 的 fork 上
git push origin master