Git - 将大型提交历史从 Pushed Head 恢复到错误的分支
Git - Revert Large commit history from Pushed Head to wrong branch
我的一位同事以某种方式将他对我的团队正在处理的发布分支的 HEAD 修订推送到我们的主要开发分支。 (这将是不正确推送的 145 次提交)
我想保持我们的提交历史干净,所以我正在考虑是否应该做任何事情,或者只是创建一个新的开发分支来开始工作。
我不能简单地做一个
git revert <last-trusted-sha>..HEAD
因为分支上有多个合并(从我们执行拉取请求并且 Git 创建一个合并 remote_currentbranch 到 currentbranch)。
有什么方法可以轻松解决这个问题吗?还是我只是一个接一个地提交,直到它被更正?
谢谢
要恢复 development
分支,您可以使用以下命令:
git checkout development
git reset --hard HEAD~145
git push -f
或者如果您知道 development
分支上的最后一次提交 sha-1 值,然后将 release
分支上的提交推送到 development
分支,您还可以使用 git reset --hard <last commit>
替换命令 git reset --hard HEAD~145
。然后 development
分支将被恢复。
这在技术上应该很容易解决:
- 找到您希望恢复的上一个正确的提交。
git branch develop THEHASH -f
git push origin develop -f
通常出于对同事的尊重,你不会做这样的事情。但在这种情况下,无论如何一切都已经坏了,所以你也可以。
要找到 145 步后的正确提交,git reflog
可能会有所帮助,除非您可以使用 git log
轻松发现它。
我的一位同事以某种方式将他对我的团队正在处理的发布分支的 HEAD 修订推送到我们的主要开发分支。 (这将是不正确推送的 145 次提交)
我想保持我们的提交历史干净,所以我正在考虑是否应该做任何事情,或者只是创建一个新的开发分支来开始工作。
我不能简单地做一个
git revert <last-trusted-sha>..HEAD
因为分支上有多个合并(从我们执行拉取请求并且 Git 创建一个合并 remote_currentbranch 到 currentbranch)。
有什么方法可以轻松解决这个问题吗?还是我只是一个接一个地提交,直到它被更正?
谢谢
要恢复 development
分支,您可以使用以下命令:
git checkout development
git reset --hard HEAD~145
git push -f
或者如果您知道 development
分支上的最后一次提交 sha-1 值,然后将 release
分支上的提交推送到 development
分支,您还可以使用 git reset --hard <last commit>
替换命令 git reset --hard HEAD~145
。然后 development
分支将被恢复。
这在技术上应该很容易解决:
- 找到您希望恢复的上一个正确的提交。
git branch develop THEHASH -f
git push origin develop -f
通常出于对同事的尊重,你不会做这样的事情。但在这种情况下,无论如何一切都已经坏了,所以你也可以。
要找到 145 步后的正确提交,git reflog
可能会有所帮助,除非您可以使用 git log
轻松发现它。