GIT忽略已跟踪文件的修改
忽略未纳入版本管理的文件或文件夹
我们知道可以通过几种方法来配置git忽略对某些未跟踪文件的跟踪。
- .gitignore
版本库中的每个目录层级都可以有一个.gitignore文件,这个文件每一行保存了一个匹配的规则,如:.gitignore文件本身是纳入版本库管理的。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26# build生成文件
build/
root/WEB-INF/classes/
*.class
# lib文件和meta文件
#root/WEB-INF/lib/
root/META-INF/
# vim交换文件
*.swp
# eclipse工程文件
#.classpath
#.project
#.settings/
# netbeans工程文件
#build.xml
#nbproject/
#gradle
.gradle
#python cache folder
__pycache__ - 全局ignore文件
可以为自己配置一个全局的ignore文件,位于任何版本库之外:其语法与.gitignore一样1
$ git config --global core.excludesfile ~/.gitignoreglobal
- exclude
git还提供了另一种exclude方法来排除文件。.gitignore用来保存的是公共的需要排除的文件,
而.git/info/exclude文件里设置的则是你自己本地需要排除的文件,他不会影响到其他人,也不会提交到版本库中去。
忽略已纳入版本管理的文件或文件夹
以上这些方法对于尚未被git跟踪管理的文件是有效的,如果想忽略已经被git纳入版本库管理的文件的修改,则需要另外的方法。
告诉git忽略对已经纳入版本管理的文件.classpath的修改,git会一直忽略此文件直到重新告诉git可以再次跟踪此文件
1 | $ git update-index --assume-unchanged .classpath |
告诉git恢复跟踪.classpath
1 | $ git update-index --no-assume-unchanged .classpath |
查看当前被忽略的、已经纳入版本库管理的文件:
1 | $ git ls-files -v grep -e "^\[hsmrck\]" |
References:
[1]在 git 中忽略文件 gitignore 与 exclude
===
[erq]