如何在git中“撤消撤消”?

时间:2011-11-17 03:58:51

标签: git

要重置我的上一次提交,我这样做了:

git reset --soft HEAD^

但我做了太多次了。现在我想回到一对夫妇身边。这可能吗?

此外,我有一个开发人员拉动并合并生产应用程序上的代码,完全消除了所有内容。然后为了修复它,他手动覆盖应用程序源中的一些文件。有不好的提交。应用程序无法运行。

有没有办法在Git中对特定时间点进行硬重置?我对它不够熟悉。

2 个答案:

答案 0 :(得分:5)

使用git reflog查看您的位置并重置为该位置。 (或在重置时使用HEAD@{1}之类的符号)

对于另一个问题,从git log获取要重置的提交的哈希并执行git reset --hard <sha1>。或者您甚至可以执行git reset --hard HEAD@{1 day ago}等等,如果您想在过去的某个时间重置某些提交。由于您正在重写历史记录,因此您必须进行强制推送 - git push -f

另外,为什么开发人员要投入生产?有门 - CI,测试等。

答案 1 :(得分:2)

  

有没有办法在Git中对特定时间点进行硬重置?

是。 git reset --hard <SHA1-id-of-the-commit-you-want-to-hard-reset-to>

有关git reset的更多信息,请参阅here (Undoing in Git - Reset, Checkout and Revert)。要了解数据恢复的基础知识,请参阅此处:Data Recovery Section in Chapter 9 of ProGit book

how to undo things in git上有更多提示。