社区管理 github pr 发送单一或指定数个 commit 到远程仓库的方法记录

陈恒捷 · 2016年12月03日 · 最后由 test 回复于 2016年12月07日 · 3436 次阅读

最近维护 testerhome 的代码,偶尔会遇到一些 bug fix 的提交。为了避免以前的 merge ruby-china 时发生的冲突地狱,现在策略改为了非 testerhome 特性的提交都尽可能提交到 ruby-china 这个源分支,因此就产生了标题里面的需求:提交单一或者指定的数个 commit 到远程仓库。

因为这个技巧可能以后其他想提交代码到 testerhome 的同学都用得上,所以放到 站务 板块

问题描述

目前有一个我的个人仓库(后续称为 chjRepo),fork 自 testerhome(后续称为 testerhomeRepo),而 testerhome 的又 fork 自 ruby-china(后续称为 ruby-chinaRepo)。

testerhomeRepo 中有不少 testerhome 自己的提交,而 fork 自这个仓库的 chjRepo 仓库自然也有这些提交。这导致了我在 chjRepo 中直接发起 pr 到 ruby-china 时,github 自动对比两个仓库的 diff 会把 testerhome 自己的提交包含进来。

pr 到 testerhomeRepo:

pr 到 ruby-chinaRepo:

希望达成的目标是 pr 到 ruby-chinaRepo 也能和给 testerhomeRepo 一样的效果。

问题探索

仔细想想,pr 的原理是对比两个 branch 之间的差异,那么把这两个 branch 差异缩小到只有那个想 pr 的 commit 不就行了?那么可以再 fork 一份 ruby-chinaRepo ,然后在那一个仓库上添加这个提交,再发 pr ?

但去 github 点击 fork 的时候,发现不行。因为 testerhomeRepo 也是 fork 自 ruby-chinaRepo 的,所以 chjRepo 已经被视为是一个 ruby-chinaRepo 的 fork 了。

最后,在万能的 stackoverflow 上得到了启发:http://stackoverflow.com/questions/5256021/send-a-pull-request-on-github-for-only-latest-commit 。虽然不能 fork ,但本地有一个 branch 里面的提交记录和 ruby-chinaRepo 的 master 一致不就行了?

解决方案

  1. 添加 ruby-chinaRepo 到远程仓库:git remote add ruby-china git@github.com:ruby-china/homeland.git
  2. 获取 ruby-chinaRepo 远程仓库的内容到本地:git fetch ruby-china
  3. 关键的一步,新建一个 branch ,并把 branch 内容设为 ruby-chinaRepo 的 master :git checkout -b pr-branch-for-ruby-china ruby-china/master
  4. 加载自己想添加的那次提交(假设 rev 为 aaa):git cherry-pick aaa
  5. git log 确认提交树只是新增了想加上的提交后,把这个分支提交到远程仓库 chjRepo(默认本地别名为 origin):git push --set-upstream origin pr-branch-for-ruby-china

然后再在 github 上用 pr-branch-for-ruby-china 做 pr ,那么变更树里面就只会有 aaa 这次提交的内容了~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 45 条回复 时间 点赞

赞,学习致用,希望更多人来贡献社区代码

测试一下

再次测试

测试一下推送

再来一次

再试试

继续测试

come on!

again and again

come on, again!

继续测试 111

4324234

#19 楼 @help33 宣传 vbxcvb

给个推送啊。。。

再试试 123

给我推送

试试

#27 楼 @chenhengjie123 试试回复的推送

again and againasdfasdf

@Lihuazhang 自行车支持

啊实打实的 @Lihuazhang 12312231

@Lihuazhang 自行车支持 1

@Lihuazhang 阿斯达 12313

@Lihuazhang 自行车 231331 阿斯达

阿斯达 1231 1 @Lihuazhang

@Lihuazhang 自行车不好

来一发推送

再来一发推送试试

again 推送

试试正式版的推送

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册