git 忽略已经跟踪文件的改动

本文介绍如何利用Git的.gitignore及$GIT_DIR/info/exclude来忽略指定文件或文件夹的改动,特别介绍了如何忽略已追踪文件的改动,以及如何通过git update-index命令实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在git的功能里有一项是忽略部分文件,其中常用的就是在.gitignore 中进行修改,通常用在新建仓库时使用,例如:

1
2
3
4
target/
.settings/
.project
.classpath

  忽略target文件夹,本地的编译文件就不再进入版本库,忽略.settings .project .classpath 能够忽略本地的工作环境。同样的,$GIT_DIR/info/exclude 也可以做到 .gitignore的效果 ,但是又有不同。.gitignore 是全局的,修改后,push了.gitignore的修改就可以让所有人都拥有了这些"忽略"设置,而  $GIT_DIR/info/exclude 是本地的,也就是在exclude里做了设置,别人是“看”不到的,其实也是没法commit和push对exclude的修改的。

相同点都支持正则表达式,都是对版本库里未追踪的文件或文件夹做忽略,一旦版本库里已经存在,则失效。不同点就是 一个全局,一个本地。

  

  但是有时候会有这种需求,忽略已追踪文件的改动, 例如,工程里已经有了pom.xml,并且已经放到版本库,这时候我想修改下pom.xml让其适配自己的环境(比如设置连自己的测试数据库),但是又不想不小心push到远程仓库。由于已经存在于版本库,

因此上面提到的两种方式都已经失效了。查阅文档,发现有办法解决,如下:

1
2
3
4
5
6
7
8
9
本地修改不提交到远程仓库<br><br>git update-index --assume-unchanged index.jsp
  
取消本地忽略
  
git update-index --no-assume-unchanged index.jsp
  
查看本地仓库哪些文件被加入忽略列表
  
git  ls-files -v

 

优点:本地命令,设置不会提交到remote,只需设置一次即可。
缺点:不支持正则表达式,也不支持文件夹,只支持单个文件的添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值