相关疑难解决方法(0)

Make .gitignore会忽略除少数文件之外的所有内容

我知道.gitignore文件隐藏了Git版本控制中指定的文件.我有一个项目(LaTeX),它在运行时会生成许多额外的文件(.auth,.dvi,.pdf,日志等),但我不希望这些文件被跟踪.

我知道我可以(也许应该)这样做所有这些文件放在项目中的一个单独的子文件夹中,因为我可以忽略该文件夹.

但是,有没有可行的方法将输出文件保存在项目树的根目录中,并使用.gitignore忽略除了我用Git跟踪的文件之外的所有内容?就像是

# Ignore everything
*

# But not these files...
script.pl
template.latex
# etc...
Run Code Online (Sandbox Code Playgroud)

git gitignore

1531
推荐指数
22
解决办法
42万
查看次数

我如何告诉Git忽略除子目录之外的所有内容?

我想忽略我的存储库中的所有文件,除了bin子目录中出现的文件.我尝试将以下内容添加到我的.gitignore:

*
!bin/*
Run Code Online (Sandbox Code Playgroud)

然而,这并没有产生预期的效果:我在里面创建了一个新文件bin/,但git status仍在显示nothing to commit (working directory clean).

有什么建议?

git gitignore

203
推荐指数
10
解决办法
8万
查看次数

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文件中添加"没有点的文件"?

我想这将照顾所有那些烦人的无扩展文件.

git gitignore

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

.gitignore NuGet排除packages/include packages/repositories.config

我正在尝试为使用NuGet的Visual Studio项目创建.gitignore.它目前包含:

\packages/*
!packages/repositories.config
Run Code Online (Sandbox Code Playgroud)

这不会忽略文件夹中的任何内容.一切都在添加上演.我也尝试过:

packages/
!packages/repositories.config
Run Code Online (Sandbox Code Playgroud)

这会忽略packages文件夹中的所有内容,并且不包含packages/repositories.config.

我究竟做错了什么?

git gitignore nuget

85
推荐指数
4
解决办法
4万
查看次数

如何否定模式在.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万
查看次数

如何为Intellij Idea拼写检查创建共享的可编辑字典?

它需要有一个Intellij Idea拼写检查词典,它符合以下要求:

  1. 可以由VCS共享,因此所有开发人员都可以使用它
  2. 每个开发人员都应该能够轻松编辑它

据我所知,Idea中有两种类型的词典:

  1. 一个用户词典,名为"%username%.xml"(设置 - >拼写 - >接受的词)
  2. 自定义词典的数量,"*.dic"(设置 - >拼写 - >词典)

但它们都不符合要求.

用户词典易于编辑(Alt + Enter"保存...到词典")并且可以添加到VCS,但它有一个预定义的用户名,因此无法共享(例如开发人员A共享他的A.xml,但是开发人员B无法使用它,因为他的Idea项目仅适用于B.xml)

自定义词典没有共享问题,但应手动编辑,需要重新启动Idea才能应用更改(例如让它看到新词)

我没有找到一个插件来解决这个问题或任何类似的问题,这让我觉得没有人需要这样的字典,或者答案太明显了.

那么,有什么办法吗?

version-control dictionary spell-checking intellij-idea

33
推荐指数
3
解决办法
2865
查看次数

git clean不会在切换分支时删除添加到分支的子模块

如何切换分支时摆脱子模块.我不明白为什么git clean说它删除了子模块但没有.这是一个错误吗?下面是剪切和粘贴步骤来重现.

git --version
git version 1.7.8.4

git init submod
cd submod
echo "This is a submodule" > README.txt
git add .
git commit -m "Initial commit"
cd ..
git init prog
cd prog
echo "This is a program" > README.txt
git add .
git commit -a -m "Initial commit"
git checkout -b topic1
git submodule add ../submod
git commit -m "Added submodule"

git checkout master
#warning: unable to rmdir submod: Directory not empty
#Switched to branch 'master'

git status …
Run Code Online (Sandbox Code Playgroud)

git

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

gitignore:忽略文件夹层次结构中除一个特定文件类型之外的所有文件

我想忽略下面和文件夹中的所有文件,除了特定文件类型可能在文件夹层次结构中的某个位置:

/Test
/Test/unknown/folder/structure/below
Run Code Online (Sandbox Code Playgroud)

现在我想忽略文件Test夹内部和下面的所有文件,除了某个名为的css文件layout.css,例如:

/Test/layout.css
/Test/fileto.ignore
/Test/another/folder/ig.nore
/Test/in/a/unknown/folder/layout.css
/Test/in/a/unknown/folder/ignore.me
Run Code Online (Sandbox Code Playgroud)

.gitignore应该忽略

/Test/fileto.ignore
/Test/another/folder/ig.nore
/Test/in/a/unknown/folder/ignore.me
Run Code Online (Sandbox Code Playgroud)

我的.gitignore文件不起作用:

Test/
!layout.css
Run Code Online (Sandbox Code Playgroud)

有什么建议?

git gitignore

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