恢复Git中的一些更改

时间:2016-02-11 11:00:16

标签: git version-control

在我的Git存储库中,我从分支devel分叉了master分支。

在此之后,我在devel进行了一些更改,并提交了几次。

现在我意识到其中一些变化是错误的。

对于某些(但不是全部)更改(devel相对于master),还原(反向修补)的最佳方法是什么?我需要检查每个更改(是否还原它),然后如何还原给定的更改集?

2 个答案:

答案 0 :(得分:2)

对于有错误的每次提交(按逆时间顺序),请执行:

git revert <sha of commit> --no-commit
git reset head

这将使您的工作副本反映存储库,减去指定提交中引入的所有更改。您只想恢复某些的更改;为此,您需要将这些转换添加到索引中。您可以使用the command line执行此操作,但这可能非常麻烦。我建议使用像Source Tree这样的工具;通过这种方式,您可以直观地选择要在哪个文件中放置的帅哥。

如果您对索引包含所需的所有转换感到满意,请继续git commit,然后执行git checkout .清理工作副本。然后转到您想要(部分)还原的下一个提交。

请注意,如果您的错误分布在一堆提交中并且您不想单独还原每个提交,那么您也可以将一系列提交传递给git revert

答案 1 :(得分:-1)

  

现在我意识到其中一些变化是错误的......恢复

的最佳方法是什么

在这里阅读全部内容: How to move HEAD back to a previous location? (Detached head)

它将解释你如何恢复,结帐和其他一些有用的信息。

例如:

git reflog

您也可以随时使用reflog

git reflog
git checkout HEAD@{...}

这会让你回到你想要的提交

enter image description here