如何在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.