为什么.gitignore停止工作?几次提交后总是停止

prk*_*001 0 git gitignore

所以我的.gitignore只是在某个时候停止正常工作,并向我显示我想忽略的目录中的更改.

  • 是的,我把它保存为ANSI
  • 文件末尾没有多余的字符
  • .gitinore位于工作树的根目录中
  • 我已经阅读了有关此***解决方案的所有信息:

    git rm -r --cached.git add.git commit -m"修复未跟踪文件"

它确实在我的机器上完美运行,我做了这三个步骤 - 提交它们 - 我可以在我的机器上对被忽略的目录进行更改.

问题是,当我将此提交提取到服务器时,它会删除所有被忽略的内容!不是它只是忽略它,它从服务器中删除文件和目录,使项目变得无用......

在整个互联网上,这个解决方案似乎是唯一一个破坏.gitignore的解决方案,但并不是因为它删除了不应删除的文件和目录.这很傻,很久以前就应该删除这样一个愚蠢的bug ...

编辑:它发生在不同的路径或文件上,当手动或通过软件添加到.gitignore时 - 将gitignore路径放在这里是没有意义的.< - 这是我提到的错误,而不是我运行一些命令......

axi*_*iac 5

.gitignore不会删除您服务器上的任何内容.你做到了!

再次阅读你的问题.你跑了:

git rm -r --cached .
git add .
git commit
Run Code Online (Sandbox Code Playgroud)

第一个命令告诉Git从索引中删除所有内容.它基本上准备一个空工作树作为下一个提交.

第二个命令将工作目录添加回索引,但由于您刚添加的行.gitignore,您要忽略的文件不再出现在索引中.

第三个命令只会使您的更改永久化.这意味着您刚刚创建的提交不包含您刚添加的文件.gitignore.

发生这种情况是因为这样做的目的是.gitignore:它告诉Git哪些文件不跟踪(任何更多).

因为它们在过去已被跟踪,所以文件不会从存储库中删除,它们只是在最后一次提交(以及所有将来的提交)中都不存在.运行后运行后可以恢复它们git pull:

git checkout <commit_id> -- <file_path>
Run Code Online (Sandbox Code Playgroud)

哪个<commit_id>是包含文件的最后一次提交的哈希值(就在您添加其名称之前.gitignore),并且<file_path>是您想要获取的一个被忽略文件的路径.对每个被忽略的文件重复