git ls文件--即使在提交之后,阶段也会显示文件

git ls文件--即使在提交之后,阶段也会显示文件,git,indexing,stage,Git,Indexing,Stage,我在使用git命令,该命令显示当前驻留在临时区域内的所有文件(是否与索引相同?) 首先,我从索引中删除了所有文件: $ git rm --cached * rm 'newfile' rm 'os-list.txt' rm 'remote_stuff' rm 'removethis' 现在我检查索引中的文件: $ git ls-files --stage 100644 07e6e472cc75fafa944e2a6d4b0f101bc476c060 0 .gitignore 您只能

我在使用git命令,该命令显示当前驻留在临时区域内的所有文件(是否与索引相同?)

首先,我从索引中删除了所有文件:

$ git rm --cached *
rm 'newfile'
rm 'os-list.txt'
rm 'remote_stuff'
rm 'removethis'
现在我检查索引中的文件:

$ git ls-files --stage
100644 07e6e472cc75fafa944e2a6d4b0f101bc476c060 0       .gitignore
您只能看到剩下的.gitignore文件

然后我们更改newfile的内容。然后我们将新文件添加到索引中

$ git add newfile
检查状态:

$ git status -s
M  newfile
D  os-list.txt
D  remote_stuff
D  removethis
?? os-list.txt
?? remote_stuff
?? removethis
我们可以看到新文件现在在索引中

现在,我们希望提交文件时暂存区域为空

$ 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
但即使在提交之后,我们仍看到新文件仍在暂存区:

$ git ls-files --stage
100644 07e6e472cc75fafa944e2a6d4b0f101bc476c060 0       .gitignore
100644 76abab2928bdd7dfe157109666023bb0c5e4c465 0       newfile
$ git status -s
?? os-list.txt
?? remote_stuff
?? removethis
但如果我们检查状态,就会发现暂存区中没有任何内容:

$ git ls-files --stage
100644 07e6e472cc75fafa944e2a6d4b0f101bc476c060 0       .gitignore
100644 76abab2928bdd7dfe157109666023bb0c5e4c465 0       newfile
$ git status -s
?? os-list.txt
?? remote_stuff
?? removethis
嗯,我想要的是显示暂存区中所有文件的命令。命令gitls files--stage返回的输出我不理解

谢谢

现在,我们希望提交文件时暂存区域为空

$ 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
那是你的错误。别指望这样

。。。如果我们检查状态,我们会看到暂存区没有任何东西

git status
不显示索引/暂存区域中的内容。相反,对于每个文件,它会将索引/暂存区域中的内容与以下内容进行比较:

  • HEAD
    commit中的内容:如果不同,则该文件为“暂存提交”;及
  • 工作树中的内容:如果不同,则文件“不准备提交”
-这就是为什么一个文件既可以“为提交而暂存”也可以“为提交而不暂存”的原因。这只是意味着索引副本,即您在git ls文件--stage中看到的副本,与其他两个副本都不同

每个文件都有三个活动副本。1当这三个副本都相同时,
git status
不会显示任何内容。当文件F的某些副本不同时,
git status
会告诉您有关文件F的信息。这里就是它的全部内容

索引/暂存区域在任何时候都保存2您计划(或Git计划)在下一次提交中放置的内容。这就是为什么在更改工作树副本后必须对其进行更新:以便Git计划在下一次提交中放入的内容与工作树副本匹配


1从技术上讲,它最多有三份,因为您可能会丢失一份或两份。当且仅当索引中有一个文件副本时,才会跟踪该文件(即使该文件位于
标题中
提交,也仅当该文件也位于索引中时才会跟踪该文件)。如果工作树文件存在且不在索引中,则不跟踪该文件。(因此,在
git rm--cached
之后,
HEAD
和工作树中的文件将同时被删除和取消跟踪。)

2参见脚注1,然后参见冲突合并案例。在冲突合并期间,索引最多可保存每个文件的三个副本:合并基副本、
--ours
副本和
--theres
副本。如果添加
副本和工作树副本,这意味着在冲突合并期间,任何一个文件最多有五个活动副本