转载地址:https://blog.zfanw.com/best-practice-contribute-on-github/
分叉
首先,Fork开源项目到自己得github账户下,比如JackTuoTuo/VerificationCodeView到rgdzh1/VerificationCodeView
克隆
从rgdzh1/VerificationCodeView
克隆代码到本地:
$ git clone https://github.com/rgdzh1/VerificationCodeView.git
分支
进入克隆下来的代码目录,并创建一个分支,命名workFix:
$ cd VerificationCodeView
$ git checkout -b workFix
修改更新
在workFix分支下修改更新代码并commit:
$ git commit -m '更新XXX功能'
推送
将本地workFix分支中commit推送到github上temp_pr分支:
$ git push origin workFix:temp_pr
提交Pull request
分支推送到github后,rgdzh1/VerificationCodeView
项目下就会出现pull request相关按钮,提交给上游的JackTuoTuo/VerificationCodeView
,请求Merge。
思考
一般我们使用衍合的目的,是想要得到一个能在远程分支上干净应用的补丁,比如某个项目你不是维护者,但是想帮点忙,最好使用衍合处理。
先在自己的一个分支进行开发,当准备向主项目提交补丁的时候,根据最新的orgin/master进行一次衍合操作然后再提交,这样维护者就不需要任何整合工作。
更新上游库
-
首先配置上游库:
$ git remote add upstream https://github.com/JackTuoTuo/VerificationCodeView.git
-
切换至本地库的
master
分支,同步上游库代码:$ git pull --rebase upstream master
-
接着再切换到本地workFix分支,合并代码
git rebase master
推送
-
修改完成后,可以再次推送代码到github。
$ git push origin workFix:temp_pr
-
但是会推送失败,因为线上得temp_pr与线下得workFix分支所基于得base已经不一样了。git会提示我们先pull,merge。步过可以选择很暴力得方式,强制覆盖。
$ git push --force origin workFix:temp_pr
清理分支
-
在 pull request 被合并后,删除远程的
temp_pr
分支及本地workFix
分支$ git push origin --delete temp_pr $ git branch -D workFix