为什么在git中对文件级操作使用签出和重置命名?
在阅读了关于git重置、签出和恢复的文章之后,我仍然不太理解一些命令命名和它们的行为之间的联系。让我们看看下面的表格: 在提交级别上,命名行为对应对我来说似乎很好,但在文件级别上,我宁愿使用为什么在git中对文件级操作使用签出和重置命名?,git,Git,在阅读了关于git重置、签出和恢复的文章之后,我仍然不太理解一些命令命名和它们的行为之间的联系。让我们看看下面的表格: 在提交级别上,命名行为对应对我来说似乎很好,但在文件级别上,我宁愿使用git-reset,而不是键入git-checkout,因为我们在这里基本上做的是重置 在解压过程中,我希望有类似于git unstage的东西。更容易理解和理解 所以,文件级签出和取消stage的这种奇怪的命名是历史遗留下来的还是背后有一些逻辑原因?这是历史和Git的一般倾向的结合,即一个命令做五件逻辑上
git-reset
,而不是键入git-checkout
,因为我们在这里基本上做的是重置
在解压过程中,我希望有类似于git unstage
的东西。更容易理解和理解
所以,文件级
签出
和取消stage
的这种奇怪的命名是历史遗留下来的还是背后有一些逻辑原因?这是历史和Git的一般倾向的结合,即一个命令做五件逻辑上不相关的事情,只要这五件事情都使用相似的源代码级别行动
由于git reset
在提交->索引方向上对索引起作用,“unstage”是一个索引操作,包括从提交到索引的复制,因此它被阻塞在reset命令中
由于git checkout
执行提交->索引->工作树操作,并且将文件还原为提交版本需要提交->工作树副本,因此无法执行签出操作
(尤其让人困惑的是,Mercurial有一个只影响文件的
revert
操作,而Git的Git revert
会进行一个新的提交,它会备份以前的提交,Mercurial会调用hg backout
。正如两位评论员所指出的那样,您可以设置别名,尽管我发现这与关于h的老话不谋而合ow标准非常棒:“有很多可供选择,如果你不喜欢其中任何一个,你可以自己编一个!”)如果你想要像“unstage”这样的命令名,可以使用Git或shell别名来创建自定义名称好的,这就是Git。至于Git unstage
,您可以为它定义一个别名:Git config--global alias.unstage“reset HEAD--”
。