*.dll
文件,这实际上是我想要的行为。但是,如果我想要一个异常(即能够提交foo.dll
),如何实现呢?#1 楼
使用:*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
来自gitignore:
可选的前缀!否定了模式;先前模式排除的所有匹配文件将再次包含在内。如果否定的模式匹配,它将覆盖优先级较低的模式源。
评论
另请参阅回复形式@Matiss Jurgelis-这是重要的补充
–丹
15年8月6日在10:08
我可以在项目的gitignore中添加例外,而不在全局gitignore中添加例外吗?例如,是否要在目录中包含所有DLL?我的gitignore_global中有* .dll,而我项目的gitignore中有!Libs / *。dll,但这似乎不起作用。
–乔尔·金泽尔(Joel Kinzel)
15年11月10日在21:20
@jkinz,您应该尝试!Libs / ** / *。dll。
–罗斯伯格·林哈雷斯(Rosberg Linhares)
16年11月9日在20:50
@RosbergLinhares或!** / Libs / *。dll,具体取决于文件夹结构。
– JAB
17年4月4日在20:18
谢谢,但是在Mac上,在与!foo.dll相同的行上添加注释确实使命令无效。如果我在单独的行上添加评论,它将起作用。
– Giacomo
18年7月7日在15:18
#2 楼
如果您编写以下内容,Git会忽略文件夹:/js
,但如果执行以下操作则无法添加例外:
!/js/jquery
或!/js/jquery/
或!/js/jquery/*
您必须写:
/js/*
,只有这样,您才能删除像这样的子文件夹
!/js/jquery
评论
那很重要谢谢!
– VisioN
16-10-10在16:41
但是看起来您无法添加嵌套文件夹,例如!/ js / jquery / xyzlib不会被忽略...
–无知
17年7月16日在13:19
正如@Ignorant所说,忽略规则中的“除外”文件夹必须与“ *”位于同一位置
–红豌豆
17年9月29日在23:42
那么/ js / *,!/ js / jquery,/ js / jquery / *,!/ js / jquery / xyzlib?感觉像是一种相当有趣的方式...
–灭顶之夜
17年11月23日在1:47
你真的帮了我
–罗耶亚
19 Mar 24 '19在20:33
#3 楼
您可以简单地git add -f path/to/foo.dll
。 .gitignore
仅忽略进行常规跟踪的文件以及类似git add .
的东西评论
只是为了获得更多详细信息,-f告诉git强制在回购中添加此文件,因为由于您.gitignore,它可能首先忽略该文件。
–RPDeshaies
16年4月21日在18:24
如果只有一个文件,这很好,如果需要模式,则没什么用
–利亚姆
16年8月23日在15:46
#4 楼
要排除目录中的所有内容,但排除某些子目录,请执行以下操作:wp-content/*
!wp-content/plugins/
!wp-content/themes/
源:https://gist.github.com/444295
#5 楼
只需在排除规则之前添加!
。根据gitignore手册页:
模式具有以下格式:
。 ..
可选的前缀!否定了模式;先前模式排除的所有匹配文件将再次包含在内。如果否定的模式匹配,则会覆盖优先级较低的模式源。
#6 楼
.gitignore中的!foo.dll
,或(每次!)git add -f foo.dll
#7 楼
如果您使用的是Visual Studio,而您的.dll恰好位于bin
文件夹中,则需要为特定bin文件夹本身添加一个例外,然后才能为.dll文件添加例外。例如,!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]/
模式。#8 楼
解决方案取决于git ignore规则与异常规则之间的关系:文件/文件处于同一级别:使用@Skilldrick解决方案。
文件夹/子文件夹:使用@Matiss Jurgelis解决方案。
不同级别的文件/文件或文件/子文件夹:您可以执行以下操作:
*.suo
*.user
*.userosscache
*.sln.docstates
# ...
# Exceptions for entire subfolders
!SetupFiles/elasticsearch-5.0.0/**/*
!SetupFiles/filebeat-5.0.0-windows-x86_64/**/*
# Exceptions for files in different levels
!SetupFiles/kibana-5.0.0-windows-x86/**/*.suo
!SetupFiles/logstash-5.0.0/**/*.suo
#9 楼
从Git 2.7.0开始,Git将考虑例外情况。从官方发行说明中:允许更高版本的“!/ abc / def”覆盖出现在同一.gitignore文件中的更低版本的“ / abc”容易表达
“ / abc目录中的所有内容都将被忽略,除了...”。
https://raw.githubusercontent.com/git/git/ master / Documentation / RelNotes / 2.7.0.txt
编辑:显然,自Git 2.8.0起,此操作不再起作用
评论
这对任何人有用吗?似乎不适合我。
–安库尔
17年5月3日,0:54
stackoverflow.com/q/53753201/125507这个已删除
– Endolith
20年7月21日在3:30
评论
.gitignore中可能的异常重复
首先,关于此主题的重复答案的祖父-您应该查看的答案很可能是-让.gitignore忽略除少数文件以外的所有内容-非常正常的活动和几个好的答案。我特别喜欢这个答案,这个答案似乎清晰而透彻。
Make .gitignore的可能重复项会忽略除少数文件以外的所有内容