是否可以撤消由以下命令引起的更改?如果是这样,怎么做?
git reset --hard HEAD~1
Pat Notz 是正确的。只要提交在几天之内,您就可以取回提交。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
您可以在示例中看到 file2 由于硬重置而被删除,但当我通过 reflog 重置时又被放回原处。