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