git忽略未被跟踪和已被跟踪的文件

git的文件操做本质上来说是基于文件索引来作追踪的。
 
至于忽略未跟踪(untrack)文件文件,git提供了三种方式
1 .gitignore
2 git config --global core.excludesfile
3 git/info/exclude
网上有不少参考资料,可自行查阅。
不一样语言项目大体须要忽略的文件,也已有大量现成模板。
 
至于如何忽略已跟踪(tracked)文件,使得当本地某系文件(尤为是配置文件发生改变时,不须要体如今git变化列表中)有如下两种方式:
1.git update-index --assume-unchanged /path/file 与git update-index --no-assume-unchanged /path/file
2.git update-index --skip-worktree /path/file 与git update-index --no-skip-worktree /path/file
此时再对/path/file进行更改,你会发现不会体如今git status列表中
有不少文章介绍采起git rm --cache的方式,不可取,这种方法本质上是将全部文件都删除了
解释:
--assume-unchanged 假定开发人员不会更改文件。此标记旨在为无变化文件夹(如 SDK)改善性能。
--skip-worktree 用于命 GIT 再也不染指特定文件——即使开发人员可能更改它——的情形。例如,若是主源码库上游承载某些即将投入生产的配置文件而你不但愿意外的提交影响到那些文件,--skip-worktree 正是你的菜。
 
因此我建议使用git update-index --skip-worktree来进行忽略
用如下命令能够查询被skip-worktree命令忽略的文件
git ls-files -v | grep -i ^S
 
极端状况:
某些已跟踪且被跳过的文件在master分支上发生了变化,与本地冲突致使没法进行pull操做。
建议解决步骤以下:
1.检查被跳过的文件
git ls-files -v | grep -i ^S
window下没有grep命令,执行
git ls-files -v

2.发现被跳过的文件在冲突列表中则取消跳过html

git update-index --no-skip-worktree /path/file

3.使用stash暂存本地版本nginx

git stash

4.拉取最新文件git

git pull

5.自动解决bash

git stash pop

6.各类方式解决冲突性能

...spa

7.从新将该文件加入跳过列表
git update-index --assume-unchanged path/file

 

git 提供多种处理冲突的方法,自行搜索。
相关文章
相关标签/搜索