Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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 add)添加到git后输入“git diff”结果时需要“-cached”标志?_Git - Fatal编程技术网

为什么在将文件(git add)添加到git后输入“git diff”结果时需要“-cached”标志?

为什么在将文件(git add)添加到git后输入“git diff”结果时需要“-cached”标志?,git,Git,要提交的更改: 使用git重置头。。。拆开 [gdaniel@vnc23 sx_fit_regression]$ git status On branch master Your branch is ahead of 'origin/master' by 4 commits. [gdaniel@vnc23sx_拟合_回归]$ new file: eth/fdb/configuration/eth_fdb_cli/eth_fdb_cli.cases new file: eth

要提交的更改: 使用git重置头。。。拆开

[gdaniel@vnc23 sx_fit_regression]$ git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
[gdaniel@vnc23sx_拟合_回归]$

   new file:   eth/fdb/configuration/eth_fdb_cli/eth_fdb_cli.cases
   new file:   eth/fdb/configuration/eth_fdb_cli/specific_test.py
   new file:   eth/fdb/configuration/eth_fdb_cli/test_suit_runner.py
   new file:   eth/fdb/configuration/eth_fdb_cli/test_wrapper.py
   modified:   eth/utilities/eth_constants.py
   modified:   eth/utilities/eth_fdb_tools.py
   modified:   libs/tools/string_manipulation_tools.py

Untracked files:#   (use "git add <file>..." to include in what will be committed)

   .project
   .pydevproject
   eth/utilities/Test.py
请澄清

谢谢


因为Git通常会将工作树与索引进行比较。将文件添加到索引暂存区域后,就没有什么区别了。git diff-cached将索引暂存区域与最新提交头进行比较。

因为git通常将工作树与索引进行比较。将文件添加到索引暂存区域后,就没有什么区别了。git diff-cached将索引暂存区域与最新的提交头进行比较。

有时候git语法有点混乱,对吗

git diff在工作副本中输出diff。当您添加-staged或-cached时,您会告诉git将已添加的文件改为diff。 如果对您有意义,您可以将它们视为两个不同的命令


此外,如果您还想查看新文件的差异,则必须首先添加它们

有时候git语法有点混乱,对吧

git diff在工作副本中输出diff。当您添加-staged或-cached时,您会告诉git将已添加的文件改为diff。 如果对您有意义,您可以将它们视为两个不同的命令

此外,如果您还想查看新文件的差异,则必须首先添加它们

-缓存在这里有点误导。这是舞台表演的同义词

所以git diff显示的是未分级的更改,git diff-cached显示的是分级/缓存的更改。

-cached在这里有点误导。这是舞台表演的同义词

所以git diff显示的是未分级的更改,git diff-cached显示的是分级/缓存的更改。

设置 图中有两处信息:

工作树是文件的签出位置、修改位置以及对文件所做更改的暂存位置。 暂存区域也称为索引或缓存1。 提交通常是从临时区域的内容创建的

请注意,工作树和暂存区域通常都基于同一个提交头引用点所在的提交

git-diff命令

没有特定参数的GIT-DIFF命令,但可能带有指定具体路径的参数,将分级区域与工作树进行比较。

这是合乎逻辑的,因为它向您显示了您可能希望进行的更改,然后提交

扩展来说,一旦您准备了一个更改,并且它现在位于临时区域,git diff就会停止显示该更改,因为工作树和临时区域现在包含相同的信息

如果您想问Git,如果我现在执行Git提交,会提交什么?您必须运行git diff-cached或git diff-staged,使git将基本提交HEAD与staging区域的内容进行比较

请注意,如果您只进行了工作树中的部分更改,那么现在您有三个可能的差异需要考虑:

暂存区域和工作树之间的差异:未暂存的更改

使用git diff查看它们

基本提交、头和暂存区域之间的区别:将提交什么

使用gitdiff-cached或gitdiff-staged查看它们

基本提交、头和工作树之间的区别:未提交的更改总数

使用git diff HEAD查看它们

1最初,暂存区的基本思想是提供一个具有非常快速访问的数据存储,该数据存储将引用所有元数据,这些元数据包括签出到工作树中的文件以及为下一次提交而暂存的修改内容更改。因为这确实是元数据的缓存,所以即使在包含大量文件的树上,git状态和类似操作也能以闪电般的速度进行,所以使用了这个名称,并被卡住了。IIRC,它后来被称为索引,然后被重新命名为暂存区,以帮助普通人更容易掌握这个概念。

设置 图中有两处信息:

工作树是文件的签出位置、修改位置以及对文件所做更改的暂存位置。 暂存区域也称为索引或缓存1。 提交通常是从临时区域的内容创建的

请注意,工作树和暂存区域通常都基于同一个提交头引用点所在的提交

git-diff命令

没有特定参数的GIT-DIFF命令,但可能带有指定具体路径的参数,将分级区域与工作树进行比较。

这是合乎逻辑的,因为它向您显示了您可能希望进行的更改,然后提交

扩展来说,一旦你准备了一个变更,并且它现在在准备区,git diff就会停止显示这个变更,因为 e工作树和临时区域现在包含相同的信息

如果您想问Git,如果我现在执行Git提交,会提交什么?您必须运行git diff-cached或git diff-staged,使git将基本提交HEAD与staging区域的内容进行比较

请注意,如果您只进行了工作树中的部分更改,那么现在您有三个可能的差异需要考虑:

暂存区域和工作树之间的差异:未暂存的更改

使用git diff查看它们

基本提交、头和暂存区域之间的区别:将提交什么

使用gitdiff-cached或gitdiff-staged查看它们

基本提交、头和工作树之间的区别:未提交的更改总数

使用git diff HEAD查看它们

1最初,暂存区的基本思想是提供一个具有非常快速访问的数据存储,该数据存储将引用所有元数据,这些元数据包括签出到工作树中的文件以及为下一次提交而暂存的修改内容更改。因为这确实是元数据的缓存,所以即使在包含大量文件的树上,git状态和类似操作也能以闪电般的速度进行,所以使用了这个名称,并被卡住了。IIRC,它后来被称为索引,然后被重新命名为暂存区,以帮助普通人更容易地掌握这个概念。

最小阻力路径 git diff最常见的使用情形是,您刚刚对工作树(当前正在处理的文件)进行了一些更改,并且希望看到这些更改可以进一步添加到下一次提交中。您还没有将它们暂存,这表明您还没有确定它们是否足以用于下一次提交。为了帮助您做出决定,您可能需要运行git diff来查看这些更改到底是什么

已经添加到索引(下一次提交的暂存区域)的文件可能已经过审查,并确定已准备好并可接受下一次提交

为了尽可能轻松地检查您刚做的更改,而不被您已经可以在下一次提交中进行的更改分散注意力,git diff不使用其他选项的默认行为是对照索引检查工作树:

吉特差异[][-][…​] 此表单用于查看更改 您为下一次提交创建了相对于索引暂存区域的索引 换句话说,这些差异是您可以告诉Git进一步了解的 添加到索引中,但仍然没有。您可以通过 使用git添加[1]

更不常见 当然,即使您已经审阅了一些更改,并认为它们已准备好进行下一次提交,您可能仍然希望在提交更改之前再次检查这些更改。由于这种情况不太常见,因此理所当然地需要额外的选项来执行这些更改:

git diff[]-缓存[][-][…​] 这张表格是 查看为下一次提交(相对于 已命名。通常您希望与最新版本进行比较 提交,所以如果您不给予,它默认为HEAD 不存在,例如未出生的分支,且未给出 显示所有暂存的更改。-暂存是-cached的同义词

文档中的其他示例: 检查工作树的各种方法

[gdaniel@vnc23 sx_fit_regression]$ git diff --color  eth/utilities/eth_constants.py
[gdaniel@vnc23 sx_fit_regression]$< Blank Output>                                                 
[gdaniel@vnc23 sx_fit_regression]$ git diff --color --cached eth/utilities/eth_constants.py
diff --git a/eth/utilities/eth_constants.py b/eth/utilities/eth_constants.py
index 9c0df62..c94f04e 100755
--- a/eth/utilities/eth_constants.py
+++ b/eth/utilities/eth_constants.py

Output omitted...
工作树中的更改尚未转移到下一次提交。 索引和上一次提交之间的更改;如果不使用-a选项运行git提交,将提交什么。 自上次提交以来工作树中的更改;如果运行git commit-a,将提交什么

可能是不必要的旁注 <席】如果看起来奇怪,你会检查工作树对索引,看看你刚才做的变化,即使索引是空的,而不是检查它对头-一个引用最近的承诺,目前的分支,即你刚才做了什么改变-你可能想考虑会发生什么,当一个ex is committed(ex is committed):结果,new commit(新提交)是HEAD的内容,加上或减去索引中的更改。在索引中没有进行任何更改的假设提交仍将是HEAD的内容以及索引中的添加或减去;只是索引由没有更改的内容组成,即当ind时HEAD+index=HEADex==0。因此,考虑到这一点,git diff不带任何选项,索引中也没有任何更改,将在下一次提交时根据暂存区域显示工作树中的更改,但这实际上相当于对照HEAD检查工作树,在这种情况下,将前面示例中的第一个和第三个等效。

Path最小阻力 git diff最常见的用例是在您刚刚创建 对您的工作树(您当前正在处理的文件)进行一些更改,您希望看到这些更改可以进一步添加到下一次提交中。您还没有将它们暂存,这表明您还没有确定它们是否足以用于下一次提交。为了帮助您做出决定,您可能需要运行git diff来查看这些更改到底是什么

已经添加到索引(下一次提交的暂存区域)的文件可能已经过审查,并确定已准备好并可接受下一次提交

为了尽可能轻松地检查您刚做的更改,而不被您已经可以在下一次提交中进行的更改分散注意力,git diff不使用其他选项的默认行为是对照索引检查工作树:

吉特差异[][-][…​] 此表单用于查看更改 您为下一次提交创建了相对于索引暂存区域的索引 换句话说,这些差异是您可以告诉Git进一步了解的 添加到索引中,但仍然没有。您可以通过 使用git添加[1]

更不常见 当然,即使您已经审阅了一些更改,并认为它们已准备好进行下一次提交,您可能仍然希望在提交更改之前再次检查这些更改。由于这种情况不太常见,因此理所当然地需要额外的选项来执行这些更改:

git diff[]-缓存[][-][…​] 这张表格是 查看为下一次提交(相对于 已命名。通常您希望与最新版本进行比较 提交,所以如果您不给予,它默认为HEAD 不存在,例如未出生的分支,且未给出 显示所有暂存的更改。-暂存是-cached的同义词

文档中的其他示例: 检查工作树的各种方法

[gdaniel@vnc23 sx_fit_regression]$ git diff --color  eth/utilities/eth_constants.py
[gdaniel@vnc23 sx_fit_regression]$< Blank Output>                                                 
[gdaniel@vnc23 sx_fit_regression]$ git diff --color --cached eth/utilities/eth_constants.py
diff --git a/eth/utilities/eth_constants.py b/eth/utilities/eth_constants.py
index 9c0df62..c94f04e 100755
--- a/eth/utilities/eth_constants.py
+++ b/eth/utilities/eth_constants.py

Output omitted...
工作树中的更改尚未转移到下一次提交。 索引和上一次提交之间的更改;如果不使用-a选项运行git提交,将提交什么。 自上次提交以来工作树中的更改;如果运行git commit-a,将提交什么

可能是不必要的旁注
<席】如果看起来奇怪,你会检查工作树对索引,看看你刚才做的变化,即使索引是空的,而不是检查它对头-一个引用最近的承诺,目前的分支,即你刚才做了什么改变-你可能想考虑会发生什么,当一个ex is committed(ex is committed):结果,new commit(新提交)是HEAD的内容,加上或减去索引中的更改。在索引中没有进行任何更改的假设提交仍将是HEAD的内容以及索引中的添加或减去;只是索引由没有更改的内容组成,即当ind时HEAD+index=HEADex==0。因此,考虑到这一点,git diff不带任何选项,索引中也没有任何更改,将在下一次提交时根据暂存区域显示工作树中的更改,但这实际上相当于根据头检查工作树,在这种情况下,使前面的示例中的第一个和第三个等效。

A picture能说千言万语;请参见此答案中的图表:图片能说千言万语;请参见此答案中的图表: