Log*_*Lee 3 git indexing stage
我正在使用 git 命令来显示当前驻留在暂存区域内的所有文件(与索引相同吗?)。
首先,我从索引中删除了所有文件:
$ git rm --cached *
rm 'newfile'
rm 'os-list.txt'
rm 'remote_stuff'
rm 'removethis'
Run Code Online (Sandbox Code Playgroud)
现在我检查索引中的文件:
$ git ls-files --stage
100644 07e6e472cc75fafa944e2a6d4b0f101bc476c060 0 .gitignore
Run Code Online (Sandbox Code Playgroud)
您可以看到只剩下 .gitignore 文件。
然后我们更改newfile的内容。然后我们将 newfile 添加到索引中。
$ git add newfile
Run Code Online (Sandbox Code Playgroud)
检查状态:
$ git status -s
M newfile
D os-list.txt
D remote_stuff
D removethis
?? os-list.txt
?? remote_stuff
?? removethis
Run Code Online (Sandbox Code Playgroud)
我们可以看到 newfile 现在在索引中。
现在,当我们提交文件时,我们希望暂存区域为空。
$ git commit -m "TEST333"
[master 0adab53] TEST333
4 files changed, 1 insertion(+), 13 deletions(-)
delete mode 100644 os-list.txt
delete mode 100644 remote_stuff
delete mode 100644 removethis
Run Code Online (Sandbox Code Playgroud)
但即使在提交之后,我们看到 newfile 仍然在暂存区域中:
$ git ls-files --stage
100644 07e6e472cc75fafa944e2a6d4b0f101bc476c060 0 .gitignore
100644 76abab2928bdd7dfe157109666023bb0c5e4c465 0 newfile
Run Code Online (Sandbox Code Playgroud)
但是如果我们检查状态,我们会发现暂存区域中没有任何内容:
$ git status -s
?? os-list.txt
?? remote_stuff
?? removethis
Run Code Online (Sandbox Code Playgroud)
好吧,我想要的是显示暂存区域中所有文件的命令。该命令git ls-files --stage返回我不理解的输出。
谢谢!
\n\n\n现在,当我们提交文件时,我们希望暂存区域为空。
\n
那是你的错误。别指望这个!
\n\n\n\n\n...如果我们检查状态,我们会发现暂存区域中没有任何内容
\n
git status不向您显示索引/暂存区域中的内容。相反,对于每个文件,它会比较索引/暂存区域中的内容与以下内容
HEAD:如果不同,则文件“暂存以进行提交”;和\xe2\x80\x94 这就是为什么一个文件可以“暂存以进行提交”和“不暂存以进行提交”。这只是意味着索引副本(您在 中看到的副本)与其他两个副本git ls-files --stage不同。
每个文件都有三个活动副本。1 当三个都相同时,git status什么也不说。当文件F的某些副本不同时,git status告诉您有关文件F的信息的信息。这就是它的全部内容。
索引/暂存区域始终保存2您计划(或 Git 计划)放入下一次提交中的内容。这就是为什么你必须在更改工作树副本后更新它:以便 Git 计划放入下一个提交中放入的内容将与工作树副本匹配。
\n\n1从技术上讲,最多为三份副本,因为您可能会丢失一份或两份副本。当且仅当索引中存在文件的副本时才会跟踪HEAD文件(即使它位于提交中,也仅当它也在索引中时才会被跟踪)。如果工作树文件存在且不在索引中,则不会对其进行跟踪。(因此,在 后git rm --cached,工作树中和工作树中的文件HEAD将同时被删除和取消跟踪。)
2请参阅脚注 1,然后查看冲突的合并情况。在冲突合并期间,索引最多保留每个文件的三个副本:合并基础副本、--ours副本和--theirs副本。如果您添加HEAD副本和工作树副本,这意味着在冲突合并期间,任何一个文件最多有五个活动副本。