我们需要恢复到之前的提交,但由于自提交以来的更改已被推送到生产中,我们无法使用git reset
销毁回购历史记录。
已回复过去的提交here和here,但都没有提供令人满意的非破坏性解决方案。
我们尝试通过在单独的分支中检出先前的提交来关注@Ben's answer,但是当我们尝试将其合并到master中时,我们得到“已经是最新的”。消息没有任何反应。
$ git checkout 0766c053 -b reverted
$ git checkout master
$ git merge reverted
Already up-to-date.
答案 0 :(得分:4)
我得到了它,感谢来自@Amadan的这个link和@BobSlocum,害羞而又神秘,谁给了一个罚款answer然后将其删除并离开...
以下是您所要做的一切:
git revert --no-commit 0766c053..HEAD
这会将HEAD中的所有内容还原为提交哈希。 (--no-commit
标志允许git立即恢复所有提交,而不是在范围内为每个提交的消息乱丢历史记录。)
答案 1 :(得分:0)
有人可以毫无疑问地制作一个git reset
序列,但这是直接路线:
git checkout -B master $(
git commit-tree -p master -m - 0766c053^{tree}
)
和git commit --amend
添加提交消息。