Pat Notz is correct.
(Pat Notz是正确的。)
You can get the commit back so long as it's been within a few days. (只要几天之内就可以收回承诺。)
git only garbage collects after about a month or so unless you explicitly tell it to remove newer blobs. (git仅在大约一个月后收集垃圾,除非您明确告诉它删除较新的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
You can see in the example that the file2 was removed as a result of the hard reset, but was put back in place when I reset via the reflog.
(您可以在示例中看到,由于硬重置而删除了file2,但是当我通过reflog重置时,file2又被放回原位。)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…