如何覆盖 .gitignore 文件上的特定扩展名?

问题描述 投票:0回答:1

我的 GitHub 存储库的 .gitignore 文件中有一条规则,用于忽略开发过程中出现的所有 .jar 文件。

现在,我正在执行一个升级任务,其中有一些 Jar 文件需要进入远程存储库。我可以从 .gitignore 文件中删除该规则,但我必须在 100 个以上之前被忽略的 Jars 中挑选每个相关的 jar 文件。

我正在做的工作被隔离到存储库上的几个文件夹和子文件夹中。

必须有一些更简单的方法来实现这个目标。谷歌搜索没有帮助,因为我什至不知道我应该搜索什么。

从这个问题的答案https://stackoverflow.com/a/60558023/14310825,我试图尝试覆盖该规则。例如,如果我的项目目录如下所示。

bootstrap/
├── .git/
├── .github/
├── .gitignore
├── css/
│   ├── bootstrap.css
│   ├── bootstrap.min.css
│   ├── bootstrap-theme.css
|   ├── Extras/
|   |   ├── iDontWantToIgnoreThis.css
|   |   └── anotherFileIDoNotWantToGetIgnored.css
│   └── bootstrap-theme.min.css
├── js/
│   ├── bootstrap.js
|   ├── Extras/
|   |   ├── iDonotWantToIgnoreThis.js
|   |   └── anotherSubFolder /
|   |          └── iDontWannaIgnoreThisFileAsWell.js
│   └── bootstrap.min.js
└── fonts/
    ├── glyphicons-halflings-regular.eot
    ├── glyphicons-halflings-regular.svg
    ├── glyphicons-halflings-regular.ttf
    └── glyphicons-halflings-regular.woff

我的 .gitignore 看起来像这样:

# Ignore java script
*.js
# Ignore Css
*.css

我不想忽略任何 js 或 css 文件:

bootstrap/css/Extras && bootstrap/js/Extras

我在 gitignore 上添加这两行的行为

!bootstrap/css/Extras/*.css
!bootstrap/js/Extras/**/*.js

Git 仍然忽略这些文件。

请注意,我正在开发一个 Java-Springboot 项目,上面是我面临的问题和我的期望的示例。我不想忽略我的存储库某些目录中的任何 .jar 文件

git version-control gitignore
1个回答
0
投票

将我的评论的编辑形式(1] 2] 3])转录成答案。

有趣的是,问题的文本提到了

.jar
文件,但示例仅涵盖
.js
.css
文件。


您应该能够在想要允许跟踪

.gitignore
文件的目录中创建
.jar
文件。该文件应包含
!*.jar
以允许跟踪目录(及其子目录)中的任何
.jar
文件。


您可以在

gitignore
的 Git 手册手册页中阅读有关 .gitignore 文件如何工作的信息。如果目录
.gitignore
中存在包含
bootstrap/js/Extras
!*.js
文件,Git 不应忽略
.js
或其子目录中的
Extras
文件。


“忽略”行的问题在于您在开头包含了

bootstrap/

!bootstrap/css/Extras/*.css
!bootstrap/js/Extras/**/*.js

但是没有子目录

bootstrap
这些行适用。您需要将这些行替换为:

!css/Extras/**/*.css

对于

.js
文件和
.jar
文件也是如此。您不需要这两行,因为
/**/
符号在链接页面上明确记录为匹配 或更多目录级别:

  • 斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录。例如,“a/**/b”匹配“a/b”、“a/x/b”、“a/x/y/b”等。

就我个人而言,我会将规则放在较低级别的

.gitignore
文件中,正如我之前指出的那样。然而,我可以看到将所有规则都放在顶层的情况。我认为这更难管理,但这可能是一个项目范围的决定,需要更多的努力才能撤销,而不是将正确的规则添加到顶级
.gitignore
文件中。

© www.soinside.com 2019 - 2024. All rights reserved.