5

我使用最新版本的 Github Desktop。我的 repo 包含一个相当大的 C# 解决方案,其中包含许多子目录和项目。我想忽略所有 R#-cache 文件和使用 .gitignore 文件编译的二进制文件,该文件位于本地 repo 目录的根目录中。在这个 repo 中没有其他 gitignore,在任何父目录中也没有。我目前的 gitignore 是这样的:

*.suo
*.user
_ReSharper.*
bin
obj
packages
*.cache
*.pdb
*.dll
*.exe
*.xml

当我进行更改、重新编译和测试所有内容时,我打开 Github Desktop。它捕获了几乎所有应该被忽略的文件,只有一些 .dlls、.pdbs 和.exes 没有被忽略并且总是显示为已更改:

图像

现在,这个 repo 中有更多的二进制文件。只有屏幕截图中的特定内容被遗漏。

这是可修复的,和/或可以更改 gitignore 以捕获它应该捕获的所有文件?

这是我尝试过的:

  • 删除并重新克隆存储库
  • 删除并手动重新创建了 gitignore
  • 在 GitHub Desktop 客户端中右键单击->按文件扩展名忽略。这不起作用,更糟糕的是,它会在 gitignore 中创建重复的掩码
  • 检查 Github Desktop 可访问的目录中是否存在冲突的 gitignore
4

1 回答 1

1

也许你有在你修改 .gitignore 之前已经被 git 跟踪的文件?这些文件(至少在 git 1.9.1 中)在添加到 .gitignore 时不会被忽略。

例如,我在我的存储库之一的根文件中创建了一个“测试”目录,并将一个文件放入其中:

mkdir test
echo "abc" > test/x.txt

我添加,承诺并推动它。然后我在根目录编辑 .gitignore 并添加了这一行:

x.txt

我还对 test/x.txt 进行了编辑并添加了一个新文件:

echo "123" >> test/x.txt
mkdir test2
echo "xyz" > test2/x.txt

现在,当我运行“git status”时,我看到:

modified:   .gitignore
modified:   test/x.txt

所以 test2/x.txt 被正确地忽略了,但 test/x.txt 仍在被跟踪。

要强制忽略文件,您可以删除它,将删除与 .gitignore 更改一起添加并提交,然后恢复文件。

于 2016-02-23T20:46:46.603 回答