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

时间:2015-11-01 11:49:38

标签: git gitignore

我有一些我不想在我的存储库之间共享的文件。我将它们添加到项目根目录的.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文件我已经提交了我想要忽略的文件,我需要以某种方式从repo中删除它们??

3 个答案:

答案 0 :(得分:4)

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

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

只要在本地删除文件(--cached将其保留在您的磁盘上),您的.gitignore就会生效。
但是如果在远程repo端版本化的话,任何git pull都会返回该文件。因此,只要您确信每个其他用户都不应该再看到该文件,就需要推送(发布)该删除。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

不要忘记提交并推送你的gitignore文件。