git - .gitignore、git add 和文件神秘消失

标签 git version-control gitignore git-add

我有一个项目,并通过 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/

相关文章:

git - 如何从 githook 获取参数?

git - 使用vue项目部署到github页面的问题

git - "git pull"是如何用 git2-rs Rust crate 完成的?

c# - Git:文件在本地删除但远程更改。我如何看到他们的变化?

iphone - iPhone (Xcode) 项目的 .gitignore 的 'standard' 内容是什么?

git - 将多个 .gitignore 文件(本地和远程)保存在同一个存储库中

git - 我可以让 .gitignore 忽略所有包含具有特定名称的文件夹的文件夹吗?

git - 在 git 中如何区分 microsoft word 文档?

git - 为什么运行 "origin/HEAD"时显示 "git branch -r"?

android - Gitignore 不会忽略文件夹 android,react native