在不使用“--hard”选项的情况下使 "git reset" 有效
Making "git reset" effective without using "--hard" option
我正在使用 git 重置在我的 git 树中向后导航;然而,除了我使用 --hard
选项的时候,我的文件没有恢复到它们的早期版本。例如,我创建了一个名为 f1.txt 的文件,在每次提交时,我都在其中添加了一个字符,但是当我使用 git reset --mixed
或 git 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
.
查看文档:
我正在使用 git 重置在我的 git 树中向后导航;然而,除了我使用 --hard
选项的时候,我的文件没有恢复到它们的早期版本。例如,我创建了一个名为 f1.txt 的文件,在每次提交时,我都在其中添加了一个字符,但是当我使用 git reset --mixed
或 git 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
.
查看文档: