4

我了解git reset更新索引,而git checkout更新工作副本。我不明白的是需要git reset接受引用和路径参数的用例?看来我总是想git checkout在这种情况下使用?

当人们问他们为什么不能时,这总是会出现git reset some-ref --hard -- some/path/to/file。真正的问题是为什么git reset我们git reset some-ref -- some/path/to/filegit checkout.

在教别人两者之间的区别之前,从来没有想过这一点。

4

1 回答 1

1

通常,如果您将文件添加到索引中,并意识到您想将其从索引中删除,那么您需要:

  • 将文件索引重置为 HEAD 的引用(HEAD)(因为 HEAD 引用了尚未暂存的状态:提交)
  • 一份文件

那是:

 git reset HEAD -- a/file

这将“取消暂存”文件。

  • git reset 在不影响内容的情况下移动 HEAD(除非您执行git reset --hard: 唯一影响工作树的模式)
  • git checkout总是修改工作树(和文件内容)

git reset接受一个 ref 和一个路径,因为它具有三种模式(软、混合和硬)。
(另见“ ?的实际用途git reset --soft”)
只有--hard模式与git checkout.

在“' ' 和 ' '之间有什么区别?git resetgit checkout ”中有关同一主题的更多信息。

于 2013-08-08T06:10:57.177 回答