相关文章推荐
满身肌肉的炒饭  ·  fatal: write error: ...·  6 天前    · 
强悍的柚子  ·  宏业金融集团 - 知乎·  1 年前    · 
憨厚的大脸猫  ·  Android Okhttp3 ...·  1 年前    · 
听话的针织衫  ·  maven - Ambari 2.7.7 ...·  1 年前    · 
眼睛小的鸭蛋  ·  ALTER TABLE ...·  1 年前    · 
首发于 银匠屋

如何在git revert后重新pull request?

一句话总结

在git revert后,再次git revert [revert-hash] 可以再次向前还原你的错误代码,就可以达到再次提交的目的。

解决以下问题

当你的代码被被merge/push到公共分支master,但是因想撤回用了git revert。

但如果你想再次提进入,会发现git提示:

There isn't anything to compare.
You'll need to use different branch names to get a valid comparison.

或者

There isn't anything to compare.
master is up to date with all commits from feature-branch. Try switching the base for your comparison.

因为git默认你已经合并进去了

前提

关于git revert和git reset的区别和用法,这里不做过多讨论,仅提供一个重新提交request的思路。

场景说明

git revert解释

可以理解为一种向前操作,是一种提交到主干公共分支后的撤销代码的手段,在你同事pull 了你的错误代码后依然能给他删除掉。因为你revert的新hash是最新的,他再次git pull 就删了你的错误代码。

解决了什么问题?

解决revert后不能再次pull request的问题,会提示没有什么变更。

假设master代码的hash 是:

hash2[最新]
hash1

你提交(merge 或者直接push origin)了错误代码到master,这时hash变为

hash3[错误][最新]
hash2
hash1

你立刻发现了业务代码不应该直接搞到master,这时假设你不知道同事有没有pull你的错误代码,也不知道同事有没有往master push代码,所以不能git reset然后 git push -f,因为这么做会让你同事的代码丢失。聪明的你,选择了git revert,

git revet hash3

这时内容就还原成了之前的hash2

hash4[git revert到了hash2的内容][最新]
hash3
hash2
hash1

如果你从 hash3 切出来一个分支feature/business,想提交PR到master进行code review

// branch feature/business
hash3[最新]
hash2
hash1

这时你会发现codereview显示:没有任何东西更改。

There isn't anything to compare.
You'll need to use different branch names to get a valid comparison.