1

我想取消最后一次 GIT 提交,而不将文件恢复到以前的提交。即,我想返回到提交前一分钟的状态 - 这样我就可以在提交前查看所有新的/修改的文件。这是可能的?

4

3 回答 3

2

您可以使用:

git reset HEAD^

您的最后一次提交将被撤消,但该提交中的更改将保留在文件系统上。

于 2013-10-31T13:22:26.337 回答
1

两个选项,基于您想要做的事情(尚不完全清楚)。您想保持工作目录不变,但想将当前分支移回上一个提交。

这可以使用以下方法轻松完成git reset

git reset HEAD~1

您还可以使用该--soft选项来保持索引不变:

git reset --soft HEAD~1

如果你想让分支指向它当前指向的提交,但你想将文件恢复到之前的提交版本,那么你也可以这样做。您可以使用git checkout从上一次提交中签出工作目录,而无需分离到该提交:

git checkout HEAD~1 -- .

基本上通过指定一个路径(在 之后--)你告诉Git实际上不要检查提交/分支,而只是检查你列出的所有文件的状态,其中.意味着相对于当前目录的所有内容(所以要检查所有内容,您应该位于存储库的根目录中)。

于 2013-10-31T13:22:24.180 回答
0

我不知道你为什么要这样做...

无论如何,一个简单的解决方案是:

  • 将整个目录复制到其他位置
  • 使用git reset --hard commit_nb将 git 历史重置为上一次提交
  • 将文件从副本覆盖到当前路径(注意只覆盖文件,不覆盖.git/目录)
于 2013-10-31T13:20:38.560 回答