git reset的--hard,--merge和--keep之间有什么区别?

时间:2019-01-21 20:30:27

标签: git

git reset的联机帮助页上说:

  

-硬

     

重置索引和工作树。对跟踪文件中的任何更改   因为<commit>被丢弃,所以工作树。

     

-合并

     

重置索引并更新工作树中的文件   <commit>HEAD之间有所不同,但保留   索引和工作树之间的差异(即已更改)   尚未添加)。如果文件之间   <commit>并且索引具有未暂存的更改,重置被中止。在   换句话说,--merge做类似   git read-tree -u -m <commit>,   但结转未合并的索引条目。

     

-保持

     

重置索引条目并更新工作树中的文件   <commit>HEAD之间的区别。如果文件不同   <commit>HEAD之间的本地更改,重置将中止。

我很难理解--hard,-merge和--keep之间的差异,这可能是由于缺乏对所涉及的各种变更的了解。

您能以更简单明了的方式重述并解释它们的含义吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

-hard:基本上,这会将您带到您提到的提交,并且删除在本地所做的任何更改。

有关--keep和--merge之间的区别,请参见:git reset --merge vs git reset --keep