拉取远程更改时不会忽略 .gitignore 文件

.gitignore files not ignored when pulling remote changes

我有一些文件不想在我的存储库之间共享。我将它们添加到项目根目录的 .gitignore 中:

# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore
# ...
.idea/

然而,当我使用 git pull 进行远程更改时,我一直收到此错误:

error: Your local changes to the following files would be overwritten by merge :
      .idea/workspace.xml
Please, commit your changes or stash them before you can merge.
Aborting

我看到了一些关于此错误消息的问题,但它们是关于覆盖文件的。我想 忽略 更改(我根本不想 git 跟踪它们,我不想 git 更改我的本地文件)。

我做错了什么?也许问题是我创建了 .gitignore 文件 我已经提交了我想忽略的文件,我需要以某种方式从回购协议中删除它们...?

如果您不想跟踪它们,您需要先将它们从历史记录中删除,然后推送该删除

git rm --cached -- afile
git add -u .
git commit
git push

只要在本地删除文件(--cached 将其保存在您的磁盘上),您的 .gitignore 就会工作。
但是任何 git 拉取都会取回该文件,如果它是在远程回购端进行版本控制的话。因此需要推送(发布)该删除,前提是您确定每个其他用户也不应该再看到该文件。

别忘了提交和推送你的 gitignore 文件。

.gitignore - 指定要忽略的故意未跟踪的文件

在这种情况下,您的 .idea 目录已在 git 中被跟踪。所以你需要先从回购中删除它。

之后,如果您将 .idea 文件夹添加到您的 .gitignore 文件中,它将不会显示在未跟踪的文件中。