gitignore遗漏了一些二进制文件(DLL和PE)

gitignore遗漏了一些二进制文件(DLL和PE),gitignore,github-desktop,Gitignore,Github Desktop,我使用最新版本的Github桌面。我的回购协议由一个相当大的C#解决方案组成,其中包含许多子目录和项目。我想使用驻留在本地repo目录根目录中的.gitignore文件忽略所有R#缓存文件和编译的二进制文件。此repo中没有其他gitignore,也没有任何父目录中的gitignore。我目前的目标是: *.suo *.user _ReSharper.* bin obj packages *.cache *.pdb *.dll *.exe *.xml 当我进行更改、重新编译和测试所有内容时,我

我使用最新版本的Github桌面。我的回购协议由一个相当大的C#解决方案组成,其中包含许多子目录和项目。我想使用驻留在本地repo目录根目录中的.gitignore文件忽略所有R#缓存文件和编译的二进制文件。此repo中没有其他gitignore,也没有任何父目录中的gitignore。我目前的目标是:

*.suo
*.user
_ReSharper.*
bin
obj
packages
*.cache
*.pdb
*.dll
*.exe
*.xml
当我进行更改、重新编译和测试所有内容时,我打开了Github桌面。它捕获几乎所有应该忽略的文件,只有一些
.dll
s、
.pdb
s和
.exe
s不会被忽略,并且始终显示为已更改:

现在,在这个repo中有更多的二进制文件。只遗漏了截图中的具体内容

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

以下是我尝试过的:

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

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

例如,我在我的一个repo的根文件中创建了一个“test”目录,并在其中放置了一个文件:

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”时,我看到:

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


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

“似乎是随机的”-真的吗?你能举个简单的例子吗?如果没有任何方法来重现这一点,你的问题是无法回答的。这就是说,这里甚至没有编程问题,所以你的问题基本上是离题的。@UlrichEckhardt“随机”部分不再是这样了。在重新克隆回购协议之后,它现在总是一样的(如屏幕截图所示)。关于主题性,这里的问题非常好。这些文件已经在回购协议中了吗
.gitignore
仅阻止添加新文件,而不阻止跟踪已存在文件的更新。尝试
git clone
到一个全新的文件夹中,查看dll文件是否正确present@Daenyth这些文件在实际的github repo中不存在。如果您使用
git bash
并且不使用github桌面应用程序,新存储库是否仍会出现这种情况?我删除了远程和本地存储库(在从github手动下载文件后)并重新创建了一个新的repo。我还仔细检查了是否没有与我们提供的gitignore相匹配的文件。这就是我在我的案例中解决问题的方法。不过,感谢您提供的提示-对于任何有类似问题的人来说,这将是一个很好的参考。
modified:   .gitignore
modified:   test/x.txt