git忽略文件
git 忽略本地修改文件
1. .gitignore文件
显式地阻止提交文件, .gitignore 文件本身提交至远程仓库,全组共享忽略文件配置
# 忽略后缀为.class文件
*.class
# 忽略文件夹
bin/
# 忽略名称中末尾为ignore的文件夹
*ignore/
# 忽略名称中间包含ignore的文件夹
*ignore*/
# 忽略tmp文件夹所有文件
tmp/*
# 检查规则
git check-ignore -v xxx.class
# .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
# 解决方法就是先把本地缓存删除(改变成未track状态),然后再提交
git rm xxx.class --cached
git add xxx
git commit -m ""
git push -u origin master
untrack 表示是新文件,没有被add过,是为跟踪的意思
not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思
2. assume-unchanged
声明本地远程都不会修改这个文件 , git 直接跳过这些文件的处理以提升性能。文件不会出现在 git status
, 不适合本地或远程需要修改的文件。本地会忽略掉之后远程文件的修改
git update-index --assume-unchanged xxx // 忽略本地修改的文件
git update-index --no-assume-unchanged xxx // 取消文件忽略
3. skip-worktree
副作用:在拉取远程分支时,由于本地和远程文件存在不一致的更新,会导致冲突的问题,需要先取消忽略的文件,再解决冲突
git update-index --skip-worktree /path/to/file // 忽略本地对这个文件的所有修改
git update-index --no-skip-worktree /path/to/file // 取消忽略
git ls-files -v | grep -E -i /path/to/file // 查看忽略的文件 第一列S标记为忽略的项目
git ls-files -v | Select-String -Pattern /path/to/file // powershell查看忽略的文件
4. .git/info/exclude
显式地阻止提交文件, exclude 文件本身不会提交至远程仓库,因此适合放一些个人定制的 「gitignore」 项目 , 文件若已存在远程仓库,则本地修改仍可以提交至远程仓库。本地的修改会显示在 git status
结果中
vi .git/info/exclude
5. 强制替换本地文件
git fetch --all // git fetch从远程下载最新的,而不尝试合并或rebase任何东西。
git reset --hard origin/master // 将主分支重置为您刚刚获取的内容。
git pull // 可以再次pull 一下
6. 全局忽略
vi .gitconfig
[core]
excludesfile = c:/Users/你的账户文件夹/.gitignore_global // 新建一个.gitignore_global文件
或者
git config --global core.excludesfile ~/.gitignore_global
参考链接
【励志篇】:
古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。