0%

git中.gitignore的使用和本地或远程中忽略文件

使用.gitignore来进行忽略文件。在windows下不能建立空文件名的文件,可以在git bash下使用touch .gitignore来进行创建.gitignore文件。

.gitignore格式规范

规范如下:

  • 空行或是以#开头的行即注释行将被忽略。

  • 匹配模式可以以/开头防止递归。

  • 匹配模式可以以/结尾指定目录。

  • 可以使用标准的 glob 模式匹配。

  • 可以使用!来否定忽略。

  所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/za/b/z 或 a/b/c/z等。

1
2
3
4
5
6
7
8
9
10
11
12
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

GitHub上有很详尽的针对多种项目及语言的.gitignore文件列表

本地和远程库中git忽略文件

从未提交过,需要忽略

  从未提交过(没有commit过),直接使用.gitignore进行忽略文件。它作用于没有被git记录过的文件(untracked files)。

已经push到远程库,现在要在远程库中删除,并在以后提交中忽略

  和上面情况不同的是,在远程库中已经存在了。(比如操作失误,现在想要删除远程库中的这些文件)

1
git rm --cached *.exe 

已经push到远程库,以后提交中忽略此文件(保留在远程库中),即使本地该文件有改动

  该情况适用于提交某个通用的模板文件,供其他人修改。别人修改过,也不会提交到远程库中。

1
git update-index --assume-unchanged config.txt