2015-07-04 60 views
2

我想了解git reset命令。我明白git reset --hard,我明白git reset --soft很少有用。尽管在网上和本网站上阅读了很多内容,但我很难理解git reset --mixed(或简单地说git reset)实际上做了什么以及它的用途。了解混帐重置 - 混合

我知道git reset将暂存区域重置为指定提交的暂存区域,使工作树保持原来的状态。

这实际上是什么意思?暂存区域包含准备提交的已修改文件。然而,工作树比暂存区更新的版本有什么意义?

我什么时候可以使用这个命令?

这很混乱。请尝试澄清。

回答

1

考虑一下你已经签出了一个分支并在你的本地进行了编辑,但是你对所有这些更改并不满意,而且你的最新提交是稳定的。在这种可怕的时刻,来了

git reset --hard

找回稳定的承诺,并摆脱所有的局部变化。

硬,软及混合都在他们正在重新

  1. --soft

只是重置您的索引,并没有触及你的任何更改的文件

的不同
  1. - 混合

这也会重置您的索引,并且不会删除本地更改的文件,只是将它们标记为未提交。

  • --hard
  • 这个硬汉只是蒸发所有的最新行动,删除文件,重新设置指数,从而带回你的最新承诺。

    此外this

    +0

    为什么我会永远想重置索引而不是工作树? –

    +1

    考虑一下你有几次提交,直到你对你的结果代码感到满意,但你不希望有那么多的提交,或者只是对你过去的提交细节感到不满。使用--soft,您可以摆脱提交,但仍可以在本地进行更改,并且可以将所有修改合并为一个提交。 –