我怎样才能撤销git reset

是否可以撤消由以下命令引起的更改? 如果是这样,怎么样?

git reset --hard HEAD~1

Pat Notz是正确的。 只要在几天内就可以获得提交。 只有垃圾收集大约一个月左右后,除非你明确地告诉它删除新的blob。

$ git init
Initialized empty Git repository in .git/

$ echo "testing reset" > file1
$ git add file1
$ git commit -m 'added file1'
Created initial commit 1a75c1d: added file1
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 file1

$ echo "added new file" > file2
$ git add file2
$ git commit -m 'added file2'
Created commit f6e5064: added file2
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 file2

$ git reset --hard HEAD^
HEAD is now at 1a75c1d... added file1

$ cat file2
cat: file2: No such file or directory

$ git reflog
1a75c1d... HEAD@{0}: reset --hard HEAD^: updating HEAD
f6e5064... HEAD@{1}: commit: added file2

$ git reset --hard f6e5064
HEAD is now at f6e5064... added file2

$ cat file2
added new file

您可以在示例中看到,由于硬重置导致file2被删除,但在通过reflog重置时已放回原位。


你想要做的是指定你想恢复的提交sha1。 您可以通过检查reflog( git reflog )然后执行来获取sha1

git reset --hard <sha1 of desired commit>

但不要等太久...几个星期后,git最终会将提交视为未提及并删除所有blob。


答案隐藏在上面的详细回复中,你可以简单地做到:

$> git reset --hard HEAD@{1}

(请参阅git reflog show的输出)

链接地址: http://www.djcxy.com/p/4009.html

上一篇: How can I undo git reset

下一篇: .gitignore is not working