我有一个项目,并通过 git 共享了根文件夹。
我和我的同胞正在使用不同版本的 Gradle(并且为项目命名了不同的东西),所以将 .idea 文件夹(某个文件夹)中的某些东西放在 .gitignore 文件中是合适的。直到现在我才意识到这一点,当我的 friend 把它 pull 下来,由于使用不同的版本改变了很多东西,现在又把它推回去了。
我已经添加到 .gitignore 文件中:
/.idea/
但是,git 似乎仍在将该文件夹中的更改发送到 Github 存储库。
我检查了一些东西,包括 this , this ,还有一些关于堆栈溢出的问题。
我运行了 git rm --cached .idea/
并成功阻止了更改被推送。但是,如果我 checkout 另一个分支然后返回到这个分支,它不会在 .idea 目录中包含适当的文件。
谢谢,
一个迷茫的程序员
最佳答案
存储库中已跟踪的文件将保留,即使您将它们添加到 .gitignore
- 它只会影响未跟踪的文件。为了从 git 中删除文件而不从工作目录中删除文件,请使用
git update-index --force-remove yourFileName
这会将文件标记为删除,但不会删除它。 --force-remove
似乎只对单个文件有效,所以要删除整个文件夹,试试这个:
find .idea | xargs git update-index --force-remove
关于git - .gitignore、git add 和文件神秘消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930692/