gitignore无法忽略文件

42
无论我在 .gitignore 文件中放置什么内容,都不能让 Git 忽略下面的 UserInterfaceState.xcuserstate 文件。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   .gitignore
    modified:  CalFoo.xcodeproj/project.xcworkspace/xcuserdata/wcochran.xcuserdatad/UserInterfaceState.xcuserstate

我正在使用/编辑这篇文章上列出的.gitignore文件。我尝试了包括完全路径名在内的所有匹配模式,例如:CalFoo.xcodeproj/project.xcworkspace/xcuserdata/wcochran.xcuserdatad/UserInterfaceState.xcuserstate,但都没有成功。

这个问题特别出现在使用Xcode创建初始git仓库和之后添加这里.gitignore文件的工作流中。更一般的解决方法可以从这个问题中找到(我猜我在搜索中从来没有找到这篇文章,因为标题中没有“gitignore”)。


可能是停止跟踪并忽略Git中文件的更改的重复问题。 - Unicornist
@Unicornist 不是重复问题 - 我想要一个特定的文件被删除并在任何地方都被忽略,而另一个问题则希望某些文件不被全局跟踪。 - wcochran
5个回答

72

你只能忽略未加版本控制的文件,但该文件已经被 Git 知道。

如果你希望 Git 跟踪该文件,则无需告诉 Git 忽略它。

如果你不想让 Git 跟踪该文件,请使用 git rm 命令,然后你的忽略规则将开始生效。

注意: git rm 命令会删除该文件。 使用 git rm --cached 从版本库中移除文件但不在磁盘上删除。


18
注意,git rm会删除文件。使用git rm --cached从仓库中移除,但不会从磁盘中删除。 - Darkhogg
感谢 @michas 和 Darkhogg -- 现在它不再被 Git 跟踪,并已从仓库中删除。 - wcochran
2
这个回答与我以前的信仰相符:但今天,我有一个在.gitignore中的文件,它没有被控制,但仍然出现在“git status”中作为未跟踪的文件(它的文件名是'build')。无论如何,“git rm build”或触摸.gitignore都没有帮助。有任何想法吗? - Stabledog
我也遇到了与@Stabledog相同的问题。 - Allen Linatoc
1
@Stabledog @AllenLinatoc,有多个可能包含排除规则的忽略文件。尝试使用 git check-ignore 命令,并且也许需要提出一个新问题来找出问题所在。 - michas

27

我曾经遇到过同样的问题。

首先提交任何未完成的代码更改,然后运行此命令:

git rm -r --cached .

这将从索引(暂存区)中移除任何已更改的文件,然后只需运行:

git add .

提交它:

git commit -m ".gitignore working now"

要撤消 git rm --cached filename 的操作,请使用 git add filename。


1
如果您执行了类似于 echo node_modules >> .gitignore 的操作,它是行不通的。
Windows 终端会以 UCS-2 LE BOM 格式保存文件,而 Git 似乎无法接受该格式。
您可以使用 记事本 打开文件,并使用 UTF-8 编码保存。

notepad save utf-8 encoding

现在可以了。

我认为他们需要解决这个问题,因为echo "filetoignore" >> .gitignore 实际上是一件很方便的事情


1
这是唯一对我起作用的方法。我尝试了清除缓存、添加、提交、推送等等...但都没有用。只需执行这个简单的修复就能奏效。 - irishman

1
对我来说,我必须将我的列表添加到Xcode源代码控制的忽略文件中。 设置 -> 源代码控制 -> git -> 在忽略文件中添加+

xcode git ignore 为了保险起见,请确保重置以使新的git规则生效。

git rm -r --cached .
git add .

我找不到你的起点...我无法进入你所捕捉的屏幕。 - Dale

0

忽略 GitHub 上文件的一种简单方法在此 perfectly explained here https://help.github.com/en/articles/ignoring-files

在推送到 GitHub 之前,请确保项目文件夹为空白。

1)打开终端并输入cd

然后将您的项目文件夹拖到终端上。完成后,它应该是这样的:

docmacbook$ cd /Users/docmacbook/Downloads/MyProjectFolder

2) 打开.gitignore文件并添加您想要忽略的文件。例如,我的.gitignore文件看起来像这样:

MyAppName.xcodeproj/xcuserdata
MyAppName.xcworkspace/xcuserdata
Pods
report.xml

3) 提交推送到GitHub。

完成后,将您的项目移动或创建一个新项目到.gitignore文件所在的文件夹中,现在您想要忽略的文件将不会被推送到您的GitHub上。

注意:这些步骤也适用于现有项目,我认为没有测试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接