gitignore错过了一些二进制文件(DLL和PE)

mın*_*maτ 5 gitignore github-desktop

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

*.suo
*.user
_ReSharper.*
bin
obj
packages
*.cache
*.pdb
*.dll
*.exe
*.xml
Run Code Online (Sandbox Code Playgroud)

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

IMG

现在,这个仓库中有更多的二进制文件.只有屏幕抓取中的特定内容被遗漏.

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

这是我试过的:

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

8fo*_*rty 1

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

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

mkdir test
echo "abc" > test/x.txt
Run Code Online (Sandbox Code Playgroud)

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

x.txt
Run Code Online (Sandbox Code Playgroud)

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

echo "123" >> test/x.txt
mkdir test2
echo "xyz" > test2/x.txt
Run Code Online (Sandbox Code Playgroud)

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

modified:   .gitignore
modified:   test/x.txt
Run Code Online (Sandbox Code Playgroud)

因此 test2/x.txt 被正确忽略,但 test/x.txt 仍在被跟踪。

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