git取消文件或文件夹追踪
一、公共设置(针对仓库生效,所有人共享该设置。被忽略的文件不会出现在仓库中)
1. 创建仓库时,在本地仓库根目录,创建.gitignore文件,写入忽略规则。规则可以是文件名,或者正则表达式。git 对于 .gitignore配置文件是按行从上到下进行规则匹配的。对于.gitignore文件本身的修改也会被提交到远程端。
2. 删除已经被追踪过的文件(远程仓库中对应的文件或文件夹会被删除)
.gitignore只能忽略那些原来没有被track的文件。已经被追踪的过的文件,需要先用如下语句删除追踪,再添加到.gitignore中防止下次被追踪。该操作会删除远程仓库中对应的文件或文件夹。
git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地。
git rm -r --cached dir1 删除dir1目录,并保留在本地。
git rm --f readme1.txt 删除readme1.txt的跟踪,并且删除本地文件。
二、本地设置(针对本地文件生效,不会影响其他人的跟踪设置)
1. 将忽略规则写在 .git/info/exclude中,语法同.gitignore。exclude文件不会被提交到远程端。被设置为忽略的文件,本地修改不会提交远程端,但其他人的修改依然不受影响。适合忽略一些本地配置文件。
2. 忽略已经被追踪过的文件
git update-index --assume-unchanged /path/file #设置忽略跟踪
git update-index --no-assume-unchanged /path/to/file #恢复跟踪
------------补充分割线-------
本地忽略被追踪过的文件还可以使用以下设置:
git update-index --skip-worktree /path/file
assume-unchanged 与 skip-worktree 的区别如下:
(以下内容转载自:https://www.zhihu.com/question/25234996/answer/794679338)
assume-unchanged:这个会关闭文件与远程仓库的跟踪,认为这个文件远程仓库是不会修改,所以每次pull都是本地的文件
skip-worktree:这个不会关闭文件与远程仓库的跟踪,只是告诉Git不要跟踪对本地文件/文件夹的更改。如果远端仓库内容有变化,pull时会拉取最新的变化,并提示冲突,但因为没有跟踪本地更改,所以需要no-skip-worktree再合并最新的变化。