GitHub桌面版正在提交被忽略的文件。

29

我的 GitHub Desktop 应用程序试图提交一堆被(应该)忽略的文件。

GitHub Desktop Screenshot

如您所见,整个 .metadata 文件夹在我的顶层 .gitignore 文件中列出。尽管如此,仍有大量来自该文件夹的文件每次都会被提交。我是否错过了有关需要将文件放置在何处的某些内容?

编辑:我应该补充说明,请不要只告诉我使用命令行。


7
.gitignore 仅在执行 "git add" 命令时用于确定要添加哪些文件。如果您已将文件添加到索引中,则无论以后是否将该文件添加到 .gitignore 中,git 都将始终跟踪其内容。因此,唯一可能的原因是您已经将所有这些文件添加到了您的 git 存储库中。 - Lasse V. Karlsen
4
处理这些文件的正确方式是清理你当前工作目录中所有未跟踪的文件(git clean -fdx),然后手动请求 git 删除所有不再需要跟踪的文件(git rm .metadata/*),最后提交这个修改。 - Lasse V. Karlsen
1
我有同样的问题。在我看来,这是意外/错误的行为。文件尚未提交。即使没有推送.gitignore,也应该动态地和本地地考虑.gitignore设置。如果我设置了过滤器来忽略它们,我不想在更改列表中看到此文件。@1615903 这不是重复的。 - Thierry Dalon
@ThierryDalon,无论.gitignore是否被推送与此问题无关。关键是gitignore仅适用于未跟踪的文件,即使OP已经接受了其他问题作为重复。 - 1615903
我的 .gitignore 文件不知怎么被放在了 .gitignore 文件夹下面(我想这是模板的原因),在这种情况下,过滤器似乎无法正常工作。如果我直接将 .gitignore 文件放在仓库根目录下,它就能正常工作。 - Thierry Dalon
1个回答

62

通常情况下,如果文件在被添加到 .gitignore 文件之前就已经存在,那么它们将不会在后续的提交或推送中被忽略。

我的建议是,如果您不想使用命令行,可以将文件/目录从您的 git 目录中剪切出去,执行一次提交,然后再推送。在推送完成后,您可以将这些有问题的文件/目录粘贴回 git 存储库中,它们现在应该已被忽略。

如果您想知道,您也可以使用 git bash 的 git rm -r --cached some-directory 命令,然后执行一次提交和推送,也能实现相同的结果。


6
我会试一下这个。明确一点,我不介意使用命令行,我只是不想听到“Github桌面版很烂,我只用命令行之类的”这样的回答。 - Derek
哦,我完全理解。祝你好运,希望一切顺利! - djreisch
5
我有同样的问题。在我看来,这是意料之外的/错误的行为。这些文件尚未被提交。即使没有推送.gitignore,gitignore设置也应该被动态和本地地考虑。如果我已经设置了过滤器来忽略它们,我不想看到这个文件出现在更改列表中。 - Thierry Dalon
您可以从GitHub桌面版中删除仓库并将其移到回收站,然后再次从GitHub克隆它。 - Ryan

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