在我的Git存储库中,我从分支devel
分叉了master
分支。
在此之后,我在devel
进行了一些更改,并提交了几次。
现在我意识到其中一些变化是错误的。
对于某些(但不是全部)更改(devel
相对于master
),还原(反向修补)的最佳方法是什么?我需要检查每个更改(是否还原它),然后如何还原给定的更改集?
答案 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@{...}
这会让你回到你想要的提交