问题描述:
使用git管理代码仓库,初始化仓库后,第一次提交文件,没有上传 .gitignore 文件。后续开发过程中,有几个文件不想被上传到代码仓库,在 .gitignore 文件增加文件名后,发现没有生效。
问题原因:
.gitignore文件只是忽略没有被staged(cached)文件,对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略
解决方案:
依次输入 下列命令
git rm -r --cached .
git add .
git commit -m "update .gitignore"
git push -u origin master
补充:
如果 cached 的文件过多,不想全部清除,只想把某一个文件或者文件夹清除,可以使用下面的命令:
清除文件夹 -r
git rm --cached -r .idea
清除文件
git rm --cached -r think
缓存清除后,再次把改动提交到git仓库,后续就会生效了
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
Git 状态 untracked 和 not staged的区别
1)untrack 表示是新文件,没有被add过,是为跟踪的意思。
2)not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思