Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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更新索引-g";没有其他选择吗?_Git - Fatal编程技术网

“究竟是什么?”;git更新索引-g";没有其他选择吗?

“究竟是什么?”;git更新索引-g";没有其他选择吗?,git,Git,我一直在看git更新索引的手册页。我根本不明白传递-g时它会做什么。该选项可选择索引中已存在的与HEAD不同的文件。但是这些文件怎么办 网上的很多讨论都是关于——假设未更改,但我想了解基本功能 附言:我想我确实理解索引的作用,理解git add和git reset的工作原理。从我阅读手册的页面上看,它什么都不做。因为: Modifies the index or directory cache. Each file mentioned is updated into the inde

我一直在看git更新索引的手册页。我根本不明白传递
-g
时它会做什么。该选项可选择索引中已存在的与HEAD不同的文件。但是这些文件怎么办

网上的很多讨论都是关于
——假设未更改
,但我想了解基本功能


附言:我想我确实理解索引的作用,理解git add和git reset的工作原理。

从我阅读手册的页面上看,它什么都不做。因为:

   Modifies the index or directory cache. Each file mentioned is updated
   into the index and any unmerged or needs updating state is cleared.
如果没有文件参数,那么“Each file”是空集,我找不到任何地方为空案例指定了特殊的语义

但是,
git update index
会检查它是否在git回购中:

~$ git update-index
fatal: Not a git repository (or any of the parent directories): .git
~$ echo $?
128
因此,
git update index
(不带参数)至少会执行健全性检查,并提供错误消息和终止状态。如果它真的没有其他功能,那么可以在脚本中使用它来检查它们是否在git回购中。请注意,其他命令如
git rev parse
也可以不带参数

如果“无参数”的意思是“没有选项,但存在文件参数”,那么它所做的就是对已经在git中的指定文件执行操作。当遇到未跟踪文件的文件参数时,它会给出错误诊断,因为未指定
--add
。它以失败的终止状态退出,并且索引未修改

因此,基本上没有选项,它提供了一个健全的检查:要么它能够对所有指定的文件进行操作,要么它退出,什么也不做。这样可以防止仅对跟踪文件进行操作的情况

-g/--同样
的目的是提供一种方法,在已经暂存的文件上重复
git更新索引
,并进行修改。它对这些文件所做的是再次更新它们,以便索引与工作副本匹配

您可能会遇到这样一种情况,即给定文件在
提交、分段索引和工作副本中不同。当您对文件进行黑客攻击,然后使用
git add
(或
git update index
)将其暂存,此时索引与工作副本相同;然后你又开始攻击它。现在它不同于索引,也不同于
HEAD
。通过再次将其更新到索引,您可以将索引与工作副本同步,因此唯一不同的是

请注意,当您执行git diff时,您会将工作文件与索引进行比较。要查看索引到标头的差异,请执行
git diff--cached
,并使用
git diff HEAD
。因此,您先对一个文件进行黑客攻击,然后将其暂存,然后再对其进行黑客攻击,
git diff
将向您显示暂存和工作之间的最新黑客攻击。最初的hack是
git diff--cached
,而整个组合hack是
git diff HEAD
。有了这一点,您可以探索
git更新索引
的作用


似乎
-g
对文件参数很有用:
git update index-g file-j file-k
的意思是“对所有进行了阶段性修改的东西执行
更新index
,并且对新入侵的
file-j
file-k

从我阅读的手册页面上看,它什么都没有做。因为:

   Modifies the index or directory cache. Each file mentioned is updated
   into the index and any unmerged or needs updating state is cleared.
如果没有文件参数,那么“Each file”是空集,我找不到任何地方为空案例指定了特殊的语义

但是,
git update index
会检查它是否在git回购中:

~$ git update-index
fatal: Not a git repository (or any of the parent directories): .git
~$ echo $?
128
因此,
git update index
(不带参数)至少会执行健全性检查,并提供错误消息和终止状态。如果它真的没有其他功能,那么可以在脚本中使用它来检查它们是否在git回购中。请注意,其他命令如
git rev parse
也可以不带参数

如果“无参数”的意思是“没有选项,但存在文件参数”,那么它所做的就是对已经在git中的指定文件执行操作。当遇到未跟踪文件的文件参数时,它会给出错误诊断,因为未指定
--add
。它以失败的终止状态退出,并且索引未修改

因此,基本上没有选项,它提供了一个健全的检查:要么它能够对所有指定的文件进行操作,要么它退出,什么也不做。这样可以防止仅对跟踪文件进行操作的情况

-g/--同样
的目的是提供一种方法,在已经暂存的文件上重复
git更新索引
,并进行修改。它对这些文件所做的是再次更新它们,以便索引与工作副本匹配

您可能会遇到这样一种情况,即给定文件在
提交、分段索引和工作副本中不同。当您对文件进行黑客攻击,然后使用
git add
(或
git update index
)将其暂存,此时索引与工作副本相同;然后你又开始攻击它。现在它不同于索引,也不同于
HEAD
。通过再次将其更新到索引,您可以将索引与工作副本同步,因此唯一不同的是

请注意,当您执行git diff时,您会将工作文件与索引进行比较。要查看索引到标头的差异,请执行
git diff--cached
,并使用
git diff HEAD
。因此,你先攻击一个文件,然后将其暂存,然后再攻击它,
g