这对GIT来说不是问题。按照设计,这就是它的工作原理。我跑了一个测试来仔细检查,但如果:
file.out
git rm file.out
git rm
这是标准的GIT行为。分阶段更改“几乎”提交,就像重新创建以前在不同提交中删除的文件一样,将被列为新文件,因此它将在此处发生。请注意,如果没有暂停删除,那么您所期望的正确行为将会发生 - git 会知道它是同一个文件。
git
具有 git 了解文件是否相同,需要运行
git add file.out
所以 git 看到同一个文件仍存在于舞台区域,只列出一个 modified 上演提交。它的工作原理是有一个额外的半承诺层,你仍然可以玩并重置(如游戏中的检查点)。
modified
至于 的 为什么 强> 作曲家这样做我不确定。我认为正确的行为是暂存所有文件更改,所以我不知道为什么新文件没有添加到树中。如果这只是一个不属于源的日志输出,请考虑添加 *.out 至 .gitignore 虽然你必须确保Composer没有添加它(并绕过忽略)。
*.out
.gitignore
如果文件的状态存在于当前提交中但不存在于索引中,则该文件的状态将被“删除”。
如果文件存在于工作树中但不在索引中,则文件未跟踪。
在这种情况下,两者都是真的:文件在当前提交中(永远冻结在那里,以及所有其他冻结到提交文件中), 不 在索引中(因为有人或某些东西从索引中删除了它),和 是 在工作树中。鉴于你的描述 这个评论 ,IDE可能已运行 git rm 从索引和工作树中删除文件,或者可能运行等效的文件 git add -u 从工作树中删除文件之后但在工作树中重新创建文件之前。
git add -u
(该 git add 命令,注意到工作树中缺少该文件 去掉 来自索引的文件。随后的 git add ,运行时的文件 是 在工作树中,将它复制到索引中,但是你需要一个变体 git add 添加索引中尚不存在的文件。)
git add