背景
在对PR
做CodeReview
的时候,有时想帮助贡献者修改一些简单的问题,以提高PR
流程的效率。
通常来讲,需要自己fork
相同的仓库,并基于对方的修改分支创建独立的分支,然后提交PR
到对方的仓库,这样对方合并完成后,贡献的PR
内容也会自动得到更新。
但这种流程比较繁琐,我有时在想,能不能直接修改对方PR
的代码,然后当前Review
的代码能够及时得到更新呢?
解决方案
最近通过社区小伙伴的提示,发现github
上还真有这样的功能,其他的代码托管平台我不知道,但github
这个特性还真是骚。
咱们以这个PR
为例:https://github.com/gogf/gf/pull/4185
目标fork
仓库为 https://github.com/PandaPy/gf
目标分支为 feature/add-get-meta-tag
我在本地基于主分支master
创建了feature/add-get-meta-tag
分支,然后
git pull https://github.com/PandaPy/gf feature/add-get-meta-tag
这样就基于他的分支修改内容继续做一些代码上的优化修改。
重点来了,修改完成后,需要通过以下的push方式来提交代码到对方的仓库分支中:
git push git@github.com:PandaPy/gf feature/add-get-meta-tag
info
这里的git push
使用的是ssh
地址,是因为github
新版本不再支持https
的push
方式。
随后,我们可以在PR
上看到提交自己提交的修改,并且在对方的fork
仓库也能看到自己的commit
。
注意事项
- 如果提交代码后,
PR
上展示的修改比较多,可能是由于你是从主分支开出来的分支,里面包含了最新的代码修改。可能先等等github
上的diff
更新,或者将PR
关闭再重新打开。 - 如果
PR
合并时使用了squash merge
或者rebase merge
,那么你的代码提交commit
将不会展示在主仓库的commit
历史中。提交的commit
将被merge
成一个commit
,而展示的commit
的contributor
只是提交PR
的同学。