要重置我的上一次提交,我这样做了:
git reset --soft HEAD^
但我做了太多次了。现在我想回到一对夫妇身边。这可能吗?
此外,我有一个开发人员拉动并合并生产应用程序上的代码,完全消除了所有内容。然后为了修复它,他手动覆盖应用程序源中的一些文件。有不好的提交。应用程序无法运行。
有没有办法在Git中对特定时间点进行硬重置?我对它不够熟悉。
答案 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上有更多提示。