问题描述
我正在使用git reset在git树中向后导航;但是,除了我使用--hard
选项的时间外,我的文件不会恢复到其早期版本。作为示例,我制作了一个名为f1.txt的文件,并在每次提交中都添加了一个字符,但是当我使用git reset --mixed
或git 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一起使用。