我知道.gitignore文件隐藏Git版本控制中的指定文件。
我如何告诉.gitignore忽略除我使用Git跟踪的文件之外的所有内容?类似于:
# Ignore everything:
*
# Do not ignore these files:
script.pl
template.latex
我知道.gitignore文件隐藏Git版本控制中的指定文件。
我如何告诉.gitignore忽略除我使用Git跟踪的文件之外的所有内容?类似于:
# Ignore everything:
*
# Do not ignore these files:
script.pl
template.latex
当前回答
我对否定单个文件也有一些问题。我能够提交它们,但我的IDE(IntelliJ)总是抱怨被忽略的文件被跟踪。
git ls-files -i --exclude-from .gitignore
显示了两个文件,我以这种方式排除了这两个文件:
public/
!public/typo3conf/LocalConfiguration.php
!public/typo3conf/PackageStates.php
最后,这对我有用:
public/*
!public/typo3conf/
public/typo3conf/*
!public/typo3conf/LocalConfiguration.php
!public/typo3conf/PackageStates.php
关键是对文件夹typeo3conf/first的否定。
此外,声明的顺序似乎无关紧要。相反,您需要显式否定所有子文件夹,然后才能否定其中的单个文件。
文件夹!public/type3conf/和文件夹内容public/pype3conf/*是.gitignore的两个不同的东西。
伟大的线程!这个问题困扰了我一段时间;)
其他回答
Gist
# Ignore everything
*
# But not these files...
!script.pl
!template.latex
可能包括:
!.gitignore
参考
从…起https://git-scm.com/docs/gitignore:
一个可选前缀“!”,用于否定模式;被先前模式排除的任何匹配文件将再次包含。如果排除了文件的父目录,则无法重新包含该文件。由于性能原因,Git没有列出排除的目录,因此包含的文件上的任何模式都不会产生任何影响,无论它们是在哪里定义的。对于以文字“!”开头的模式,在第一个“!”前面加一个反斜杠(“\”),例如“\!important!.txt”。...排除除特定目录foo/bar以外的所有内容的示例(注意/*-不带斜杠,通配符也会排除foo/bar内的所有内容):$cat.gitignore#排除目录foo/bar以外的所有内容/*!/食品/食品/*!/foo/条
到目前为止,没有什么对我有用,因为我试图从lib中添加一个jar。
这不起作用:
build/*
!build/libs/*
!build/libs/
!build/libs/myjarfile.jar
这是有效的:
build/*
!build/libs
在大多数情况下,您希望使用/*而不是*或*/
使用*是有效的,但它以递归方式工作。从那时起,它就不会查看目录了。人们建议使用!*/再次包含列表目录,但实际上最好用/*
# Blocklist files/folders in same directory as the .gitignore file
/*
# Includelist some files
!.gitignore
!README.md
# Ignore all files named .DS_Store or ending with .log
**/.DS_Store
**.log
# Includelist folder/a/b1/ and folder/a/b2/
# trailing "/" is optional for folders, may match file though.
# "/" is NOT optional when followed by a *
!folder/
folder/*
!folder/a/
folder/a/*
!folder/a/b1/
!folder/a/b2/
!folder/a/file.txt
# Adding to the above, this also works...
!/folder/a/deeply
/folder/a/deeply/*
!/folder/a/deeply/nested
/folder/a/deeply/nested/*
!/folder/a/deeply/nested/subfolder
上述代码将忽略除.gitignore、README.md、文件夹/a/file.txt、文件夹/a/b1/和文件夹/a/b2/之外的所有文件以及最后两个文件夹中包含的所有内容。(这些文件夹中的.DS_Store和*.log文件将被忽略。)
很明显我能做到/文件夹或!/。gitignore也是。
更多信息:http://git-scm.com/docs/gitignore
可选前缀!这否定了该模式;排除的任何匹配文件将再次包括先前的模式。如果否定模式匹配,这将覆盖优先级较低的模式源。
# Ignore everything
*
# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...
# ...even if they are in subdirectories
!*/
# if the files to be tracked are in subdirectories
!*/a/b/file1.txt
!*/a/b/c/*
# ignore these
*
# except foo
!foo