为什么 git 允许我重置文件?我以为我理解reset了,从某种意义上说,它正在移动 HEAD……显然我错了。
所以,git reset sha file似乎和 一样git checkout sha file,除了我file在索引和工作目录中看到的。
这对我来说没有意义。有人可以解释一下区别吗?
为什么 git 允许我重置文件?我以为我理解reset了,从某种意义上说,它正在移动 HEAD……显然我错了。
所以,git reset sha file似乎和 一样git checkout sha file,除了我file在索引和工作目录中看到的。
这对我来说没有意义。有人可以解释一下区别吗?
tl; dr git reset COMMIT FILE仅更改索引,git checkout COMMIT FILE将更改索引和工作树。
git reset--soft有非常重要的,--hard和--mixed(--keep和--merge)标志
http://git-scm.com/docs/git-reset
--mixed是默认设置,当你这样做时,git reset sha file你正在mixed重置:
--混合
重置索引但不重置工作树(即保留更改的文件但未标记提交)并报告尚未更新的内容。这是默认操作。
就像上面说的那样,在这种情况下,重置根本不会触及您的工作树,只有索引中的版本被重置为 sha 中的版本。
git checkout另一方面:
当或 --patch 给出时, git checkout 不会切换分支。它从索引文件或命名(通常是提交)更新工作树中的命名路径。
因此,当您这样做时,git checkout您将丢失文件中的更改,并将其替换为 sha 中文件版本中的任何内容,而当您进行混合重置时,只有您的索引将被重置,您的工作目录仍然有您可以在以后根据需要再次进行更改。
git checkout
恢复对文件的更改。
git reset
从暂存区域中删除文件,但保留更改。