持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
一、将某文件永久忽略,不提交至git
忽略提交部分文件如node_moudles,日志文件
首先在你git所管理文件夹下,找到或创建一个名为 .gitignore 的文件,
随后将你需要忽略的文件如node_moudles都放到这里即可
注意:这种方式对已经提交到git上面的文件是无法奏效的,例如在.gitignore这个文件存在前,node_moudles这个文件已经托管提交给git了,
那后面在.gitignore这个文件里添加node_moudles表示忽略这个文件也不行,git依然会帮我们提交.
.gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
二、忽略某个已经托管给git的文件,防止二次提交
这种情况适用于在实际生产时,公司每个人修改了项目的配置,但是这个是临时的,只适用于自己本地的情况,不可提交给大家公用时,需要这么做。
2.1第一种方法 删文件再提交(需要先配置好.gitignore)
温馨提示:不要再公司这样用,自己的项目这样搞没问题
- 实际操作看一下,首先用
git ls-tree -r master --name-only #查看当前被追踪的文件
箭头指向的是之前提交过,现在要干掉的。
- 执行下面的命令,这个是把git仓库中的部分文件删掉,我这里删掉的是**.idea**
git rm -r --cached -r .idea #删除.idea目录下所有文件(-r只有目录需要)
- commit提交,pull下拉,push上推一条龙
- 提交
git commit -m "一刀切"
- 下来,push前拉一下,保持习惯
git pull origin master
或者
git pull origin master --allow-unrelated-histories
- 推上去
git push -u origin master
- 大功告成,idea下没了
2.2第二种方法 加入不提交队列
这个命令吧,可能在linux中好用,像我在IDEA中能检测到文件变化,但是commit会报错。强迫症别用。
执行命令将文件加入不提交队列
git update-index --assume-unchanged README.en.md #你的文件路径
加入不提交队列,就是阻止你提交,但是不妨碍我检测他的文件变化。好像和unchanged不对应吧。
执行命令将文件取消加入不提交队列
git update-index --no-assume-unchanged 你的文件路径
加入不提交队列后 对配置文件的修改后不会加入文件追踪的状态中 仅对本地更改有效和仓库配置文件互不影响,但是这个IDEA还会检测到变化,对我来说不太友好,等我探究一下是不是IDEA里面有什么配置。
三、已经push了该忽略的文件(如node_moudles)的挽救措施
这个时候leader肯定要骂人了,我们应该怎么挽救呢?
其实方法就是上面的删文件
把git项目中的此目录干掉,这个方法非常繁琐,git执行起来也很慢。因为node_moudles里面的文件本来就非常多,但是这也是没有办法的办法了
删除单个文件
git rm --cached log/xx.log
删除整个目录和linux一样加 -r:
git rm --cached -r logs
删除的文件很多,.或者*都可以用
git rm --cached -r .
某个文件无法忽略,可以添加-f参数强制忽略。
git rm -f --cached logs/xx.log
个人教训:
第一种,VScode配置
为了避免重现第二种情况,我们可以在VScode里面配置下,别以后忘了,配置步骤如下:
文件->首选项->设置->扩展->git
下拉找到ignore reposities->添加项->添加**/node_modules
第二种:git status 提交前检查
git status
检查检查你要提交的是啥会更好,优秀的工作习惯都是我们之前踩的坑。