2023-10-29 08:00:06

Git忽略异常

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


当前回答

解决方案取决于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

其他回答

要排除目录中的所有内容,只包括一些子目录,请执行以下操作:

wp-content/*
!wp-content/plugins/
!wp-content/themes/

来源:https://gist.github.com/444295

解决方案取决于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

对于嵌套文件夹,我根据Matiss的回答提出了一个解决方案。

假设我想忽略build/ directory(在/app中)中的所有内容。所以我这样做:

build/*

然而,如果我想排除build/outputs/bundle/release子文件夹,我需要玩一些捉迷藏!


/app/build/*
!/app/build/outputs
/app/build/outputs/*
!/app/build/outputs/bundle
/app/build/outputs/bundle/*
!/app/build/outputs/bundle/release

重要提示:

所有路径都应该以/开头,并相对于.gitignore 你必须一次处理一个子文件夹。你可以在VS Code中看到(例如)它在每一步都包含什么和不包含什么。

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

/data/*
!/data/README.md

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

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

只需添加!在排除规则之前。

根据gitignore手册页:

模式有以下格式: ... 一个可选的前缀!这就否定了模式;任何被前一个模式排除的匹配文件将被重新包含。如果匹配一个否定的模式,这将覆盖低优先级的模式源。