恢复到以前的非破坏性提交

时间:2014-02-12 02:23:06

标签: git

我们需要恢复到之前的提交,但由于自提交以来的更改已被推送到生产中,我们无法使用git reset销毁回购历史记录。

已回复过去的提交herehere,但都没有提供令人满意的非破坏性解决方案。

我们尝试通过在单独的分支中检出先前的提交来关注@Ben's answer,但是当我们尝试将其合并到master中时,我们得到“已经是最新的”。消息没有任何反应。

$ git checkout 0766c053 -b reverted
$ git checkout master
$ git merge reverted
Already up-to-date.

2 个答案:

答案 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添加提交消息。