Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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 commit与lt;文件>;和git提交——仅限?_Git - Fatal编程技术网

什么;git commit与lt;文件>;和git提交——仅限?

什么;git commit与lt;文件>;和git提交——仅限?,git,Git,似乎这两个选项的功能相同 也许他们之间有一个我看不到的差异,因为我的英语阅读能力差 你能告诉我真相吗?git commit——从给定文件中获取提交消息。在参数中,您应该输入要从存储库中获取的文件的名称 git commit—only是git commit的默认操作模式。git commit—从给定文件获取提交消息。在参数中,您应该输入要从存储库中获取的文件的名称 git commit--only是git commit的默认操作模式。答案在您列出的文档片段中: --仅限 通过获取命令行上指定路径的

似乎这两个选项的功能相同

也许他们之间有一个我看不到的差异,因为我的英语阅读能力差

你能告诉我真相吗?

git commit——从给定文件中获取提交消息。在参数中,您应该输入要从存储库中获取的文件的名称

git commit—only是git commit的默认操作模式。

git commit—从给定文件获取提交消息。在参数中,您应该输入要从存储库中获取的文件的名称


git commit--only是git commit的默认操作模式。

答案在您列出的文档片段中:

--仅限

通过获取命令行上指定路径的更新工作树内容来进行提交,而不考虑为其他路径暂存的任何内容。如果命令行中给出了任何路径,则这是git commit的默认操作模式,在这种情况下可以忽略此选项

在命令行中添加文件路径时,
--only
不会向命令中添加任何内容,您在问题中描述的第二个选项的语义适用

另一方面,正如
--仅
的其余描述所解释的,如果它与
--允许空
--修改
,一起使用,索引的内容(暂存文件)将被忽略

通过添加当前暂存的文件并更改其提交消息来修改当前提交。使用
--only
,不会修改提交的内容(忽略暂存文件),只更新提交消息

我不清楚
——只有
会改变用户的行为


但是,
--allow empty
在Git的日常工作中没有任何用处。添加它是为了帮助将其他VCS E的存储库自动转换为Git。F.e.当创建一个分支时,Subversion会创建一个新的提交,从Git的角度来看它是空的
--allow empty
允许在将Subversion存储库转换为Git时创建此类空提交。

答案在您列出的文档片段中:

--仅限

通过获取命令行上指定路径的更新工作树内容来进行提交,而不考虑为其他路径暂存的任何内容。如果命令行中给出了任何路径,则这是git commit的默认操作模式,在这种情况下可以忽略此选项

在命令行中添加文件路径时,
--only
不会向命令中添加任何内容,您在问题中描述的第二个选项的语义适用

另一方面,正如
--仅
的其余描述所解释的,如果它与
--允许空
--修改
,一起使用,索引的内容(暂存文件)将被忽略

通过添加当前暂存的文件并更改其提交消息来修改当前提交。使用
--only
,不会修改提交的内容(忽略暂存文件),只更新提交消息

我不清楚
——只有
会改变用户的行为


但是,
--allow empty
在Git的日常工作中没有任何用处。添加它是为了帮助将其他VCS E的存储库自动转换为Git。F.e.当创建一个分支时,Subversion会创建一个新的提交,从Git的角度来看它是空的
--allow empty
允许在将Subversion存储库转换为Git时创建此类空提交。

有三种方法可以使用
Git提交
(无
--amend
):

  • git commit
    ,不命名任何文件:这意味着提交当前索引

  • git提交--仅文件1。。。fileN
    ,您可以在其中命名一些文件并使用
    --only
    选项。我们稍后将对此进行描述

  • git提交--包括文件1。。。fileN
    ,您可以在其中命名一些文件,并使用
    --include
    选项。我们稍后也将对此进行描述

如果您选择列出一些非零数量的文件,但省略了
--only
选项,Git将采用
--only
选项。如果不需要
--only
选项,则必须指定
--include
选项。如果选择在命令行中列出一些文件,则必须选择这两个选项中的一个,如果选择失败,Git将为您选择。所以
--only
只是
--include
的反面

索引及其在提交中的作用 要正确理解所有三种操作模式,您需要了解Git从索引构建提交。通常它使用索引。这是上面列出的第一种模式:
git commit
,不带任何文件名,现在使用索引中的任何内容

索引本身是一种隐藏的数据结构。它有三个名字,要么反映了它的重要性,要么反映了它相当糟糕的名字,即“索引”。第二个名称是暂存区域,因为索引的作用是充当构建或暂存下一次提交的位置。这个索引或暂存区域的第三个名称是缓存

索引开始时保存当前提交中所有文件的副本,正如运行
git checkout分支时提取的那样。这些文件从分支提示提交复制到索引/暂存区域,也复制到工作树中,您可以在其中处理它们。名称索引来自这样一个事实:索引跟踪