背景
使用Git进行版本管理多人协作开发,常会遇到我们本地可能存在一套自己的配置或者某些测试文件不需要提交到远端的情况。因此需要使用Git的相关命令进行文件排除或解除追踪。
下面介绍几种方式:
1.本地添加的文件,未纳入Git管理时
我们只需要在待排除的目录内新建.gitignore文件
然后编辑.gitignore文件,增加希望排除的文件内容即可
.gitignore内容参考:
/* 或者 * 代表目录下全部排除
.gitignore 排除自身
xxx.java 排除特定文件
2.本地文件已经纳入了Git管理,同时希望在目录内使用.gitignore进行排除时
首先执行如下命令:
# 移除当前目录下缓存(当前目录是指内嵌.gitignore所处目录)
git rm -rf --cached .
然后参照方式一进行操作即可
3.文件已经纳入了Git管理,想取消文件追踪,本地更改不提交(适用于文件比较分散或同种类型文件时)
取消追踪
# 关闭跟踪文件,修改不提交
git update-index --assume-unchanged /xxx/xxx.java
# 关闭追踪某个目录下的某种类型文件
git update-index --assume-unchanged /xxx/*.yml
恢复追踪
# 恢复跟踪文件,修改提交
git update-index --no-assume-unchanged /xxx/xxx.java
# 恢复追踪某个目录下的某种类型文件
git update-index --no-assume-unchanged /xxx/*.yml
当关闭追踪文件多了时,想找出来进行提交,可以使用如下命令:
# 列出关闭追踪的文件
git ls-files -v | grep '^h\ '
# 提取文件路径
git ls-files -v | grep '^h\ ' | awk '{print $2}'
# 恢复所有文件追踪
git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged