Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在git中对文件级操作使用签出和重置命名?_Git - Fatal编程技术网

为什么在git中对文件级操作使用签出和重置命名?

为什么在git中对文件级操作使用签出和重置命名?,git,Git,在阅读了关于git重置、签出和恢复的文章之后,我仍然不太理解一些命令命名和它们的行为之间的联系。让我们看看下面的表格: 在提交级别上,命名行为对应对我来说似乎很好,但在文件级别上,我宁愿使用git-reset,而不是键入git-checkout,因为我们在这里基本上做的是重置 在解压过程中,我希望有类似于git unstage的东西。更容易理解和理解 所以,文件级签出和取消stage的这种奇怪的命名是历史遗留下来的还是背后有一些逻辑原因?这是历史和Git的一般倾向的结合,即一个命令做五件逻辑上

在阅读了关于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--”