相关疑难解决方法(0)

.gitignore排除文件夹但包含特定的子文件夹

我有文件夹application /我添加到.gitignore.应用程序/文件夹内是文件夹application/language/gr.我该如何包含此文件夹?我试过这个

application/
!application/language/gr/
Run Code Online (Sandbox Code Playgroud)

没有运气......

git gitignore

863
推荐指数
14
解决办法
32万
查看次数

gitignore排除规则如何实际运作?

我正在尝试解决大型目录结构上的gitignore问题,但为了简化我的问题,我已将其减少到以下内容.

我在一个全新的git存储库中有两个文件(foo,bar)的以下目录结构(到目前为止没有提交):

a/b/c/foo
a/b/c/bar
Run Code Online (Sandbox Code Playgroud)

显然,'git status -u'显示:

# Untracked files:
...
#       a/b/c/bar
#       a/b/c/foo
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个.gitignore文件,忽略/ b/c中的所有内容但不忽略文件'foo'.

如果我创建一个.gitignore:

c/
Run Code Online (Sandbox Code Playgroud)

然后'git status -u'显示foo和bar都被忽略:

# Untracked files:
...
#       .gitignore
Run Code Online (Sandbox Code Playgroud)

这是我所期待的.

现在,如果我为foo添加排除规则,那么:

c/
!foo
Run Code Online (Sandbox Code Playgroud)

根据gitignore手册页,我希望这可行.但它没有 - 它仍然忽略了foo:

# Untracked files:
...
#       .gitignore
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

c/
!a/b/c/foo
Run Code Online (Sandbox Code Playgroud)

这也不是:

c/*
!foo
Run Code Online (Sandbox Code Playgroud)

得到:

# Untracked files:
...
#       .gitignore
#       a/b/c/bar
#       a/b/c/foo
Run Code Online (Sandbox Code Playgroud)

在这种情况下,虽然不再忽略foo,但也不会忽略bar.

.gitignore中规则的顺序似乎也不重要.

这也不符合我的期望:

a/b/c/
!a/b/c/foo
Run Code Online (Sandbox Code Playgroud)

那个人忽略了foo和bar.

一种有效的方法是,如果我创建文件a/b/c/.gitignore并放入其中:

*
!foo
Run Code Online (Sandbox Code Playgroud)

但问题是最终在/ b/c下会有其他子目录,我不想在每一个中都放一个单独的.gitignore - 我希望创建'基于项目'.gitignore可以位于每个项目的顶级目录中的文件,并覆盖所有"标准"子目录结构.

这似乎也是等价的:

a/b/c/*
!a/b/c/foo
Run Code Online (Sandbox Code Playgroud)

这可能是我可以实现的最接近"工作"的东西,但需要说明完整的相对路径和明确的异常,如果我在不同级别有很多名为'foo'的文件,那将会很痛苦子目录树的.

无论如何,要么我不太明白排除规则是如何工作的,要么当目录(而不是通配符)被忽略时它们根本不起作用 - 以一个以/结尾的规则

任何人都可以对此有所了解吗?

有没有办法让gitignore使用像正则表达式那样合理的东西而不是这种笨拙的基于shell的语法? …

git gitignore

142
推荐指数
5
解决办法
7万
查看次数

使用.gitignore忽略除特定目录之外的所有内容

我的问题是我的git仓库里有一堆WordPress网站,其中我想有选择地只提交我themes文件夹的内容,而忽略了WordPress中的其余冗余文件.

我之前使用.gitignore文件来忽略文件类型,但它可以反过来使用 - 即忽略一切但是某个文件夹路径?

root(git repo)
- /wordpress
- - /(WordPress Site 1)/ wp-content/themes
- - /(WordPress Site 2)/ wp-content/themes
- - /(WordPress Site 3)/ wp-content/themes

谢谢-

更新:

根据答案我做了以下,但它不起作用.有任何想法吗?

# Ignore everything:
*
# Except for wordpress themes:
!*/wp-content/themes/*
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下变化:

!*/wp-content/themes*
!*wp-content/themes/*
!wp-content/themes/*
!/wordpress/*/wp-content/themes*
!wordpress/*/wp-content/themes*
Run Code Online (Sandbox Code Playgroud)

这些都没有读取我的themes文件夹.

git glob gitignore

121
推荐指数
11
解决办法
7万
查看次数

何时在gitignore中使用前导斜杠

我试图更清楚地理解.gitignore语法,特别是对于https://github.com/github/gitignore gitignores而言.

我看到前导斜杠仅用于匹配相对于.gitignore文件位置的路径名(来自http://git-scm.com/docs/gitignore):

前导斜杠与路径名的开头匹配.例如,"/*.c"匹配"cat-file.c"但不匹配"mozilla-sha1/sha1.c".

但是当我删除主要斜线时会发生什么?据我所知,有两种情况:

  1. 如果模式不包含斜杠(或者它只包含一个尾部斜杠,这意味着它应该与目录匹配),则在整个目录树中执行搜索.例如,该图案dir/将匹配<root>/dir,<root>/a/dir,<root>/a/b/c/.../dir等,其中<root>是的位置.gitignore的文件.
  2. 如果模式包含斜杠,该斜杠不在尾随位置(它不是最后一个字符),则它仅与相对于.gitignore文件位置的路径名匹配.

这些是我检查此行为的示例:

# Directory structure:
<root>
?? dir/
?   ?? test
?? src/
?   ?? dir/
?   ?   ?? test
test file is there only because Git does not track empty directories.
Run Code Online (Sandbox Code Playgroud)

第一次测试:

# .gitignore
dir/

# git status
nothing to commit
Run Code Online (Sandbox Code Playgroud)

所以Git忽略了这两个dir目录.这与案例编号1一致:模式没有斜杠(除了尾部),因此Git正在观察整个目录树,忽略与模式匹配的所有内容.

第二次测试:

# .gitignore
/dir/

# git status
Untracked …
Run Code Online (Sandbox Code Playgroud)

git gitignore

101
推荐指数
2
解决办法
1万
查看次数

.gitignore文件的对面?

可能重复:
Make .gitignore会忽略除少数文件之外的所有内容

除非在特殊文件中指定,否则可以让git默认忽略所有文件?

git

92
推荐指数
2
解决办法
2万
查看次数

如何否定模式在.gitignore中起作用?

我试图使用带有否定模式的.gitignore文件(以!开头的行),但它没有按照我期望的方式工作.

作为一个最小的例子,我有以下目录结构:

C:/gittest
 -- .gitignore
 -- aaa/
   -- bbb/
     -- file.txt
   -- ccc/
     -- otherfile.txt
Run Code Online (Sandbox Code Playgroud)

在我的gitignore文件中,我有这个:

aaa/
!aaa/ccc/
Run Code Online (Sandbox Code Playgroud)

我的理解(基于这个doc页面)是文件aaa/ccc/otherfile.txt不应该被忽略,但实际上git忽略了aaa下的所有内容.

我误解了这句话:"一个可选的前缀!否定了模式;先前模式排除的任何匹配文件将再次被包括在内."?

顺便说一下,这是在Windows上使用msysgit 1.7.0.2.

git gitignore

77
推荐指数
3
解决办法
3万
查看次数

Git:不要忽略-directory-中有一个点

我试过这个.gitignore文件:

 *
 !mydirectory.ext
 !.gitignore
Run Code Online (Sandbox Code Playgroud)

但它不起作用,除了gitignore之外的所有东西都被忽略了.

还尝试过:

 !\mydirectory\.ext
Run Code Online (Sandbox Code Playgroud)

该目录需要扩展,因为它是一个应用程序的插件.

任何解决方法?

git version-control gitignore

8
推荐指数
2
解决办法
4198
查看次数

Gitignore - 在单个命令中忽略图像并忽略除..之外的所有内容

我怎么写给.gitignore:

  1. 仅忽略图像(.jpg,.jpeg,.png,.gif)

  2. 忽略除视频之外的所有内容(.mp4,.flv等)

每次使用一个命令?

git gitignore

5
推荐指数
1
解决办法
8606
查看次数

Git会忽略除一个目录之外的所有目录中的jpg

我想修改自己的位置,.gitignore以便忽略所有.jpg不在中的文件/public/assets/images

我尝试了以下方法:

(!/public/assets/images/)!*.jpg

/public/assets/images/!*.jpg
Run Code Online (Sandbox Code Playgroud)

但是除了那两个我不确定还有什么尝试。

glob pattern-matching gitignore

1
推荐指数
1
解决办法
1984
查看次数

是否忽略子文件夹(包含所有内容)之外的所有内容?

我想忽略除特定子文件夹(及其所有内容!)以外的所有内容。我尝试了可能出现的重复问题的解决方案,但没有成功。

我需要一些简单的东西,例如:

*
!That/Very/Folder/*
Run Code Online (Sandbox Code Playgroud)

但这不起作用

git gitignore

1
推荐指数
2
解决办法
1775
查看次数

标签 统计

git ×9

gitignore ×9

glob ×2

pattern-matching ×1

version-control ×1