1. 将某文件永久忽略,不提交至git
首先在你git所管理文件夹根目录下,创建一个名为 .gitignore 的文件,随后将你需要忽略的文件都放到这里即可。
注意:
这种方式对已经提交到git上面的文件是无法奏效的,
例如: 在.gitignore这个文件存在前,.project这个文件已经托管提交给git了,
那后面在.gitignore这个文件里添加.project表示忽略这个文件也不行,
git依然会帮我们提交,这时候需要用到第二种方法。
2. 忽略某个已经托管给git的文件,防止二次提交
这种情况适用于,每个人修改了项目的配置,但是这个是临时的,只适用于自己本地的情况,不可提交给大家公用时,需要这么做。
# 执行命令将文件加入不提交队列
git update-index --assume-unchanged PATH 在PATH处输入要忽略的文件。
# 执行命令将文件取消加入不提交队列
git update-index --no-assume-unchanged PATH 恢复忽略文件
#查看忽略列表
git ls-files -v | grep '^h\ '
git ls-files -v | grep '^S\ '
#所有被忽略的文件,取消忽略的方法
git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged
git ls-files -v | grep '^S' | awk '{print $2}' |xargs git update-index --no-skip-worktree
git add .
git commit -m 'xxx'
git push
注意事项
选择以上任意一种方式都会有特殊情况:比如对当前项目 index.js 取消跟踪,当切换分支时,如果切换分支的(index.js)与本项目的index.js有冲突,那么是无法切换过去的,会提示如下:
图中表示 “config/index.js 会被即将到来的分支所覆盖,请在切换分支前进行提交”,能找到的唯一手段是
- 恢复监听、
- 使用 stash 保留数据 然后切换分支
- stash pop 恢复数据
- 重新取消监听
命令如下
git update-index --no-skip-worktree ./config/index.js
git stash
git checkout 分支名
git stash pop
git update-index --skip-worktree ./config/index.js