Skip to main content

alt text

背景

在对PRCodeReview的时候,有时想帮助贡献者修改一些简单的问题,以提高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新版本不再支持httpspush方式。

随后,我们可以在PR上看到提交自己提交的修改,并且在对方的fork仓库也能看到自己的commit

注意事项

  1. 如果提交代码后,PR上展示的修改比较多,可能是由于你是从主分支开出来的分支,里面包含了最新的代码修改。可能先等等github上的diff更新,或者将PR关闭再重新打开。
  2. 如果PR合并时使用了squash merge或者rebase merge,那么你的代码提交commit将不会展示在主仓库的commit历史中。提交的commit将被merge成一个commit,而展示的commitcontributor只是提交PR的同学。