配置好宝塔webhook后,以为结束了,可问题并没这么简单。测试更新后发现每次拉取后,本地已经加入忽略文件的数据库配置文件被修改了,也就是.gitignore忽略文件没起作用。

.gitignore文件对已经追踪的文件无效

随手百度后,知道,对于已经被追踪的文件,仅仅添加.gitignore文件是不起作用的,需要清除缓存,然后再添加,再提交就可了。命令如下:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

注意不要漏掉命令后面的“.”号,代表是当前目录。此操作提交远程仓库的话,远程仓库里对应的文件也会被删除。

仅忽略文件更新,但不删除

正常情况下,经过上面的操作,再执行git pull操作时,已加入.gitignore的忽略文件是不会再更新了。奇怪的是今天发现网站打不开了,ssh登录后执行pm2 list发现node服务器停止了,这怎么回事?原来已经忽略的文件再次被更新了,这是什么鬼?

轮番百度,找到另外一种方法,可以强制git已经追踪的文件忽略更新,这个效果不错,还避免了远程仓库文件被删除。命令如下:

# 取消对文件的版本控制,保留目前git中的文件状态,filename为你的文件名
git update-index --assume-unchanged filename

# 如果需要恢复对文件的版本控制,执行以下操作
git update-index --no-assume-unchanged filename

本地忽略整个文件夹下的文件

1、cd 先进入当前要忽略的文件夹
2、执行命令批量忽略

git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')

3、最后git status 查看是否不再提示

恢复追踪文件改动 同样加 --no恢复

git update-index --no-assume-unchanged $(git ls-files | tr '\n' ' ')

git reset --hard 放弃本地修改

正常情况下,经过上面的操作,也可以达到忽略更新的效果,可经过我的一番测试,最终发现还是不行,文件居然还是会被修改,这到底怎么回事?

不过细心的我,留意到,在项目目录执行git pull命令是正常的,只是调用webhook不行。查看webhook的代码,发现pull之前多了一行git reset --hard origin/master。对git命令不熟的我,以为这句的意思是把分支设置到master上呢?百度之后才知道,这是放弃本地修改的意思,也就是前面再多的忽略更新操作都被放弃了,就这样放弃!

于是,赶紧屏蔽这行命令,再次测试,问题终于完美解决。

参考链接:

关键词:gitgitignore
所属分类:网站技术
本文地址:https://me.i-i.me/article/4.html




评论提示: 点击头像可以回复评论

提交取消回复
[face]@
[uname]  [add_time]
[content]
[reply]
加载更多评论