gitignore 忽略文件夹 不生效
有时候我们接手别人的项目时,发现有的忽略不对想要修改,但发现修改忽略.gitignore后无效。原因是如果某些文件已经被纳入版本管理在.gitignore中忽略路径是不起作用的,这时候需要先清除本地缓存,然后重新添加并提交。
解决办法:
git rm -r --cached .
git add .
git commit -m ‘update .gitignore’
git push -u origin master
扩展出来讲,Git所管理的文件分为以下几种状态:
- Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
- Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
- Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
- Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
详细参考:
https://www.cnblogs.com/thirteen-yang/p/13878118.html
github 提交大文件提示:git this exceeds GitHub’s file size limit of 100.00 MB
分两种情况,一种是当前提交文件过大忽略该文件即可,另外一种情况是以前的提交记录中存在大文件,那就需要如下指令:
git filter-branch -f --index-filter “git rm -rf --cached --ignore-unmatch rootfs/hdc-0.11.img” – --all
rootfs/hdc-0.11.img替换为文件过大的路径。当然我们还可以适用Git LFS上传大文件,但一般情况不建议该方案。