Git 以非破坏性方式恢复到以前的提交
我们需要恢复到以前的提交,但由于提交后的更改已推送到生产环境中,我们无法使用Git 以非破坏性方式恢复到以前的提交,git,Git,我们需要恢复到以前的提交,但由于提交后的更改已推送到生产环境中,我们无法使用git reset销毁回购历史记录 恢复到过去的提交已经得到解决,但都不能提供令人满意的非破坏性解决方案 我们试图通过在一个单独的分支中签出上一个commit来跟踪,但是当我们试图将它合并到master中时,我们得到了一条“已经是最新的”消息,但什么也没有发生 $ git checkout 0766c053 -b reverted $ git checkout master $ git merge reverted Al
git reset
销毁回购历史记录
恢复到过去的提交已经得到解决,但都不能提供令人满意的非破坏性解决方案
我们试图通过在一个单独的分支中签出上一个commit来跟踪,但是当我们试图将它合并到master中时,我们得到了一条“已经是最新的”消息,但什么也没有发生
$ git checkout 0766c053 -b reverted
$ git checkout master
$ git merge reverted
Already up-to-date.
毫无疑问,有人可以编造一个
git reset
序列来完成这项工作,但下面是直接的方法:
git checkout -B master $(
git commit-tree -p master -m - 0766c053^{tree}
)
和
git commit——修改它以添加提交消息。毫无疑问,有人可以编造一个git reset
序列来执行此操作,但下面是直接的方法:
git checkout -B master $(
git commit-tree -p master -m - 0766c053^{tree}
)
和git commit——修改它以添加一条提交消息。我得到了它,多亏了@Amadan和@bobsocom,害羞而神秘,他们罚款了,然后删除了它并离开了
以下是您需要做的全部工作:
git revert --no-commit 0766c053..HEAD
这会将所有内容从头部恢复到提交散列。(无提交标志允许git一次恢复所有提交,而不是在历史记录中乱丢范围内每次提交的消息。)我得到了它,这要感谢@Amadan和@Bobsocom,害羞而神秘,他们罚款后删除了它,然后离开了
以下是您需要做的全部工作:
git revert --no-commit 0766c053..HEAD
这会将所有内容从头部恢复到提交散列。(使用--no commit
标志,git可以一次还原所有提交,而不是在历史记录中乱丢范围内每个提交的消息。)git revert
中有什么不满意的地方?似乎这正是您要查找的内容。@Amadan-git revert
只还原一个特定的提交,而忽略此后所做的任何提交。我们需要恢复到以前的提交。Git没有Git revert--to
函数。啊,我明白了。在这种情况下,这应该会有所帮助:git revert中到底有什么不满意的地方?似乎这正是您要查找的内容。@Amadan-git revert
只还原一个特定的提交,而忽略此后所做的任何提交。我们需要恢复到以前的提交。Git没有Git revert--to
函数。啊,我明白了。在这种情况下,这应该会有所帮助:@Amadan的链接更好地解释了我所说的话。不想让自己看起来像是在炫耀他的荣耀:)别担心+1.你写了一个正确的答案。另外,可能值得注意的是一种通用语法:如果您想将所有内容从X还原为Y,X^..Y
可以工作。(X..Y
将还原X之后的所有内容,而不是X本身)。@Amadan的链接更好地解释了我所说的。不想让自己看起来像是在炫耀他的荣耀:)别担心+1.你写了一个正确的答案。另外,可能值得注意的是一种通用语法:如果您想将所有内容从X还原为Y,X^..Y
可以工作。(X..Y
将还原X之后的所有内容,而不是X本身)。