所以我的.gitignore有时会停止正常工作,并向我显示我要忽略的目录更改。
我已经阅读了有关this *** solution的所有信息:
git rm -r --cached。 git添加 git commit -m“固定的未跟踪文件”
它确实可以在我的机器上完美运行,我完成了这三个步骤-提交了它们-并且可以在我的机器上的忽略目录中进行更改。
问题是,当我将该提交提交到服务器时,它将删除所有被忽略的内容!不只是它会忽略它,它还会从服务器中删除文件和目录,因此该项目变得毫无用处...
在整个互联网上,此解决方案似乎是唯一的.gitignore损坏解决方案,但并非如此,因为它删除了不应删除的文件和目录。这真是愚蠢,这种愚蠢的错误应在很久以前就删除...
edit:手动或通过软件将其添加到.gitignore时,它会在不同的路径或文件上发生-将gitignore路径放在此处没有意义。 <-这是我提到的错误,而不是我运行一些命令...
答案 0 :(得分:5)
.gitignore
不会删除服务器上的任何内容。你做到了!
再次阅读您的问题。您已经运行:
git rm -r --cached .
git add .
git commit
第一个命令告诉Git从索引中删除所有内容。基本上,它准备一个空的工作树作为下一次提交。
第二条命令将工作目录重新添加到索引中,但是由于您刚刚添加到.gitignore
的行,要忽略的文件不再存在于索引中。
第三个命令只是使您的更改永久生效。这意味着您刚刚创建的提交不包含您刚刚添加到.gitignore
的文件。
发生这种情况是因为.gitignore
的目的:它告诉Git不再跟踪哪些文件。
由于它们过去已被跟踪,因此文件不会从存储库中删除,它们只是在上一次提交(以及以后的所有提交)中不存在。您可以在运行git pull
后通过运行以下命令来恢复它们:
git checkout <commit_id> -- <file_path>
其中<commit_id>
是包含文件的最后一次提交的哈希值(在将文件名添加到.gitignore
之前),而<file_path>
是您要忽略的一个文件的路径得到。对每个忽略的文件重复此操作。