在不使用“--hard”选项的情况下使 "git reset" 有效

Making "git reset" effective without using "--hard" option

我正在使用 git 重置在我的 git 树中向后导航;然而,除了我使用 --hard 选项的时候,我的文件没有恢复到它们的早期版本。例如,我创建了一个名为 f1.txt 的文件,在每次提交时,我都在其中添加了一个字符,但是当我使用 git reset --mixedgit reset --soft 命令时,它们不会更改 f1.txt 并且所有字符都在那里(尽管当我使用 git log 时,我看到 HEAD 已经移回)。

我认为您最好使用 git checkout 而不是 git reset 进行导航。您可以将 git checkout 与提交 SHA1 一起使用。

您不能使用 git reset 在树中导航。
git reset 将重置“阶段”(当您 git commit 时提交的内容)。因此,如果您执行 git add 并想撤消它,您可以使用 git reset.
如果你这样做 git reset --hard HEAD 它也会将文件重置为 HEAD.

的状态

要在树中导航,您需要使用 git checkout <branch/commit>。 如果您不想检出提交,而只想从上一次提交中获取一个文件,您可以执行 git checkout <branch/commit> -- path/to/file.

查看文档: