2023-10-29 08:00:06

Git忽略异常

我有一个gitignore文件,使git忽略*.dll文件,这实际上是我想要的行为。然而,如果我想要一个异常(即能够提交foo.dll),我该如何实现这一点?


当前回答

你可以简单地添加-f path/to/foo.dll。

.gitignore只忽略通常跟踪和git添加之类的文件。

其他回答

解决方案取决于git的ignore规则和exception规则之间的关系:

文件/同一级别的文件:使用@Skilldrick解决方案。 文件夹/子文件夹:使用@Matiss Jurgelis解决方案。 不同级别的文件/文件或文件/子文件夹:您可以这样做: * .suo * .user * .userosscache * .sln.docstates #…… #整个子文件夹的异常 ! SetupFiles / elasticsearch-5.0.0 / * * / * ! SetupFiles / filebeat-5.0.0-windows-x86_64 / * * / * #不同级别文件的例外 ! SetupFiles / kibana-5.0.0-windows-x86 / * * / * .suo ! SetupFiles / logstash-5.0.0 / * * / * .suo

这是我用README做的。Md文件在每个目录:

/data/*
!/data/README.md

!/data/input/
/data/input/*
!/data/input/README.md

!/data/output/
/data/output/*
!/data/output/README.md

你可以简单地添加-f path/to/foo.dll。

.gitignore只忽略通常跟踪和git添加之类的文件。

.gitignore中的foo.dll,或者(每次!)git add -f foo.dll

如果您正在使用Visual Studio,而您的.dll恰巧位于bin文件夹中,那么在为.dll文件添加异常之前,您需要为特定的bin文件夹本身添加一个异常。如。

!SourceCode/Solution/Project/bin
!SourceCode/Solution/Project/bin/My.dll

这是因为默认的Visual Studio .gitignore文件包含一个忽略[Bbin]/的模式

此模式删除所有bin文件夹(以及它们的内容),这使得任何包含内容的尝试都是多余的(因为文件夹本身已经被忽略)。

我能够找到为什么我的文件没有被例外运行

git check-ignore -v -- SourceCode/Solution/Project/bin/My.dll

从Git Bash窗口。返回[Bbin]/模式。