使“ git reset”有效而不使用“ --hard”选项

问题描述

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

解决方法

您不能使用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

签出文档:

,

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