网站首页 文章专栏 参与开源提交pr的正确姿势
申请账号,这一步就不说了,基本都懂,不会的自己百度下。
1. 在提交issue之前,请经过充分的搜索,确定该issue不是通过简单的检索即可以解决的问题。
2. 查看issue列表,确定该issue不是一个重复的问题。
3. 新建一个issue并选择您的issue类型。
4. 使用一个清晰并有描述性的标题来定义issue。
5. 根据模板填写必要信息。
6. 在提交issue之后,对该issue分配合适的标签。如:bug,enhancement,discussion等。
7. 请对自己提交的issue保持关注,在讨论中进一步提供必要信息。
点击fork,稍等片刻,该项目便会在你自己的仓库中出现,fork一个项目的目的是,fork后会在自己的Github上生成了一个与原作者项目互不影响的副本,自己可以将自己Github上的这个项目再clone到本地进行修改,修改后再push,只有自己Github上的项目会发生改变,而原作者项目并不会受影响,避免了原作者项目被污染。
1). Clone 刚刚Fork 的 代码 到本地机器
git clone https://github.com/yangxing9/soul.git [此处应该是个人的 repository[repo]]
2). 设置 upstream 为 soul 的 repository
git remote add upstream https://github.com/dromara/soul.git
3). 提交一个issue
4). 然后回到本地Clone 的 Soul 代码目录 ,针对 你提交的 Issue 进行修改,但是修改前需要将分支修改下
git fetch upstream 同步上游修订,这里上游指的是一开始fork的那个项目源 使用fetch 命令, 然后在此基础上进行修订,以及PR 才是正确的,如果 fetch 有冲突,就先解决冲突 git checkout master git merge upstream/master 此处有冲突解决冲突 git checkout -b issueNo [此处的issueNo 就是你在源码的 repo 中提交的issue 产生的 编号,本例中是 #1052]
5). 开始增加/修改代码, 提交规范针对不同的开源项目要求,各自遵守
参见soul编码规范:soul编码规范
6). 本地测试没有问题,下面进行提交代码到你 Fork 库(本例就是源码库)分支上
git add 修改的代码 [最好是修改/新增 哪个文件 就 add 哪个文件] git commit -m "commit log" -- 此处都要使用English,需要注意的是git commit只是把修改的代码提交到当前分支(当前分支是issueNo,而不是master) git push origin issueNo 这一步才是将当前分支推送到自己的远程仓库
这时,在自己的远程仓库便能看刚才push上去的分支了
1). 在自己的github,发起pull request
此处为演示,实际应为具体的 issueNo分支,写好名字,写好说明,提交,就OK啦
2). 此时源码仓库会出现一个你提交的PR的请求提示,等待VP CodeReview ,通过就会Merge 你的 PR
3). 删除本地和远端的分支,同时拉取源码仓库你刚刚提交的更新
git checkout master git branch -D issueNo git push origin --delete issueNo
4). 为了每次提交commit 的整洁性 直接使用下面命令 直接强制同步原仓库
git fetch upstream && git reset --hard upstream/master && git push -f
5). 最后,为了让您的id 显示在 contributor 列表中,一定要设置
git config --global user.name "username" git config --global user.email "username@mail.com"
至此完成了一次pr提交。
github有代码自己编译和check机制,在你提交pr的时候,项目可能已经有了比较大的变更(每天都有世界各地的coder提pr),而你没有将分支保持与项目同步,所以有可能会导致check失败,pr被无视。
还记得我们在自己本地有一个soul master分支,然后又拉了一个issueNo分支,然后在issueNo上进行修改,提交的也是issueNo,然后又想起了之前有一步是“与上游建立连接”,说到你可能已经知道了master的作用–用于远程代码同步。
所以每次提交pr前,都要先从做代码同步。过程如下:
git fetch upstream git rebase upstream/master git push origin master
push完后,远程仓库便可看到你的branch版本和master分支一致了,否则这个位置会显示与master相差了多少次commit。
版权声明:本文由星尘阁原创出品,转载请注明出处!