Git 不会忽略 .gitignore 中的某些 Xcode 文件

Posted

技术标签:

【中文标题】Git 不会忽略 .gitignore 中的某些 Xcode 文件【英文标题】:Git not ignoring certain Xcode files in .gitignore 【发布时间】:2011-03-18 19:49:37 【问题描述】:

我是 Git 新手,我正在使用它来备份我正在处理的 iPhone 项目。 我添加了更新时 Git 应该忽略的文件列表(xcode 文件),但是当我提交更改时,这个 .perspectivev3(在我的 .gitignore 中)文件不断出现。有谁知道这是为什么,或者我做错了什么?

谢谢,

扎克

这是我的 .gitignore 文件中的内容:

# xcode noise
*.mode1v3
*.pbxuser
*.perspective 
*.perspectivev3
*.pyc 
*~.nib/
build/*

# Textmate - if you build your xcode projects with it
*.tm_build_errors

# old skool
.svn

# osx noise
.DS_Store
profile

【问题讨论】:

“去提交我的更改”是什么意思?未忽略的未添加文件仅显示“git status”等 这可能是个愚蠢的问题,但您是否曾经提交过 .perspectivev3 或在更新 gitignore 文件之前将其添加到索引中? 【参考方案1】:

如果它一直显示在git状态中,它一定是之前添加或提交过的。

你需要

git rm --cached 该文件,以便git status 不再列出它(它刚刚添加,但尚未提交)。 git rm 该文件,如果之前已提交(请参阅this question for instance)

【讨论】:

关于 git rm --cached 的建议不正确。请在下面查看我的答案。 git rm --cached 仅用于从本地存储库中删除文件。这正是我想做的事【参考方案2】:

你可以使用

$ git rm --cached ./whatever1.txt

某些东西已经在版本控制之下。

事实上,如果您在版本控制下有“whatever1.txt”,并且您想将其从 git 中删除,但不打扰您的工作树,那么只需执行以下操作:

$ git rm --cached ./whatever1.txt
$ echo /whatever1.txt >> $PROJECT_ROOT/.gitignore
$ git status   # this will now show ./whatever1 as "deleted" (from git, not your working tree, and will show gitignore as modified or created)
$ git commit -a

就是这样。

只使用

$ git rm

当你想从工作树 git repo 中删除文件时。

CAVEAT:您可能会使用它的场景是从 git 中删除特定于 IDE 的文件。在此示例中,“whatever1”代表您要删除的 IDE 文件。如果您正在与几个人一起处理一个项目并将此变更集推送到共享存储库,那么当他们拉取此变更集时,他们的“./whatever1”文件将被删除。对于接收端的人来说,从这里做的简单的事情是:

$ git checkout 1215ef -- ./file-you-want-to-restore ./another-file ./another-etc

(其中 1215ef 表示删除前的最后一次提交)

这具有恢复那些在拉取之前的最后一次提交时存在的文件的效果。完成此操作后,这些文件将是安全的,不会显示为未提交的 b/c,它们将被 gitignore 排除在外。

祝你好运!

【讨论】:

【参考方案3】:

.gitignore 仅适用于未跟踪的文件。如果您添加了由于 .gitignore 而无法跟踪的 git-add 文件,它们仍将是存储库的一部分。

只需从存储库中删除您不再需要的文件:

git rm *.perspectivev3

【讨论】:

嘿,我确实在将那个讨厌的文件添加到忽略文件之前添加了它。我删除了该文件,当我尝试提交更改时,该文件不再存在,因此您的建议有效。谢谢大家。 @Zach Banks 我现在将其中一个答案标记为已接受,以便他们获得信用并且其他用户知道问题已解决。

以上是关于Git 不会忽略 .gitignore 中的某些 Xcode 文件的主要内容,如果未能解决你的问题,请参考以下文章

gitignore不起作用

.gitignore 文件不起作用解决

git学习.gitignore文件忽略和删除本地以及远程文件

.gitignore

ios 忽略文件 .gitignore

git怎么把忽略文件变成普通文件