git忽略部分文件的提交以及提交错文件的挽救方法

839 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

一、将某文件永久忽略,不提交至git

忽略提交部分文件如node_moudles,日志文件

首先在你git所管理文件夹下,找到或创建一个名为 .gitignore 的文件,

随后将你需要忽略的文件如node_moudles都放到这里即可

image.png

注意:这种方式对已经提交到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 #查看当前被追踪的文件

image.png 箭头指向的是之前提交过,现在要干掉的。

  • 执行下面的命令,这个是把git仓库中的部分文件删掉,我这里删掉的是**.idea**
git rm -r --cached -r .idea #删除.idea目录下所有文件(-r只有目录需要)
  • commit提交,pull下拉,push上推一条龙
  1. 提交
git commit -m "一刀切"
  1. 下来,push前拉一下,保持习惯
git pull origin master

或者

git pull origin master --allow-unrelated-histories
  1. 推上去
git push -u origin master
  • 大功告成,idea下没了

image.png

2.2第二种方法 加入不提交队列

这个命令吧,可能在linux中好用,像我在IDEA中能检测到文件变化,但是commit会报错。强迫症别用。

执行命令将文件加入不提交队列


git update-index --assume-unchanged README.en.md #你的文件路径 

加入不提交队列,就是阻止你提交,但是不妨碍我检测他的文件变化。好像和unchanged不对应吧。

image.png

执行命令将文件取消加入不提交队列

git update-index --no-assume-unchanged 你的文件路径

image.png

加入不提交队列后  对配置文件的修改后不会加入文件追踪的状态中 仅对本地更改有效和仓库配置文件互不影响,但是这个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

image.png

下拉找到ignore reposities->添加项->添加**/node_modules

image.png

第二种:git status 提交前检查

git status

检查检查你要提交的是啥会更好,优秀的工作习惯都是我们之前踩的坑。