配置要忽略的文件和目录

使用.gitignore文件忽略文件和目录

可以将Git配置为忽略存储库操作的某些文件和目录。这是通过一个或多个.gitignore文件配置的。通常,此文件位于Git存储库的根目录下,但也可以位于子目录中。在第二种情况下,定义的规则仅对子目录及以下有效。

您可以在此文件中使用某些通配符。*匹配几个字符。可以使用更多模式,并在以下URL中进行描述:gitignore联机帮助页

例如,以下.gitignore文件告诉Git忽略bintarget目录以及以〜结尾的所有文件。

1
2
3
4
5
6
7
8
9
# ignore all bin directories
# matches "bin" in any subfolder
bin/

# ignore all target directories
target/

# ignore all files ending with ~
*~

您可以.gitignore在工作树的根目录中创建该文件,以使其特定于Git存储库。

.gitignore文件告诉Git忽略Git命令中的指定文件。您仍然可以使用参数(即使用命令)将忽略的文件添加到Git存储库的临时区域--forcegit add --force [paths]如果要添加(例如)自动生成的二进制文件,这非常有用,但您需要对添加的版本进行精细控制,并希望将其从正常工作流中排除。

最好将本地.gitignore文件提交到Git存储库中,以便克隆此存储库的每个人都拥有它。

停止基于.gitignore文件跟踪文件

如果将Git跟踪的.gitignore文件添加到文件中,则不会自动删除这些文件。Git永远不会忽略已经跟踪的.gitignore文件,因此文件中的更改只会影响新文件。如果要忽略已跟踪的文件,则需要明确删除它们。

以下命令演示了如何从跟踪中删除.metadata目录和doNotTrackFile.txt文件。这是示例代码,因为您未在示例中提交相应的文件,该命令将无法在您的Git存储库中运行。

1
2
3
4
# remove directory .metadata from git repo
git rm -r --cached .metadata
# remove file test.txt from repo
git rm --cached doNotTrackFile.txt

将文件添加到.gitignore文件不会从存储库历史记录中删除该文件。如果还应从历史记录中删除该文件,请查看git filter-branch允许您重写提交历史记录的命令。有关详细信息,请参阅使用git filter branch命令(filter-branch)

全局(跨存储库).gitignore设置

您还可以.gitignore通过该core.excludesfile设置设置对所有Git存储库有效的全局文件。以下代码段演示了此设置的设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Create a ~/.gitignore in your user directory
cd ~/
touch .gitignore

# Exclude bin and .metadata directories
echo "bin" >> .gitignore
echo ".metadata" >> .gitignore
echo "*~" >> .gitignore
echo "target/" >> .gitignore
# for Mac
echo ".DS_Store" >> .gitignore
echo "._*" >> .gitignore

# Configure Git to use this file
# as global .gitignore

git config --global core.excludesfile ~/.gitignore

全局.gitignore文件仅在本地可用。

本地每个存储库忽略规则

您还可以通过编辑存储库中的.git/info/exclude文件来创建本地每存储库规则。这些规则不会与存储库一起提交,因此不会与其他人共享。

这允许您排除,例如,本地生成的文件。

使用Git跟踪空目录

Git忽略空目录,即它不会将它们置于版本控制之下。如果要跟踪Git存储库中的空目录,最好.gitignore将目录中调用的文件放入。由于目录现在包含一个文件,Git将其包含在其版本控制机制中。

该文件可以被称为任何东西。有人建议调用该文件.gitkeep。这种方法的一个问题是.gitkeep构建系统不太可能忽略它。这可能导致.gitkeep文件被复制到输出存储库,这通常是不希望的。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×