【Git】忽略已被仓库管理的文件的修改

问题描述

我们知道 .gitignore 能够用来忽略未被 Git 仓库管理的文件/文件夹 (untracked files),也就是说,如果一个文件还没被加入到 Git 仓库中,而它的名字出现在 .gitignore 文件中,那么 git statusgit add 等命令会自动忽略这个文件,就好像这个文件不存在一样。这一功能通常被用来排除一些不想加入到仓库中的临时文件,比如构建目录(build 文件夹)及 IDE 自动生成的文件/文件夹等。

不过,还有一种情况是:有的文件我们希望加入到仓库中,但又不希望 Git 跟踪其后续的修改。比如我们写了一个示例配置文件,已经加入到仓库中(为了让其他人能够知道配置文件格式是怎样的),而在自己本地使用该配置文件时需要在里面做针对性的修改(比如自己电脑上某个文件的绝对路径),此时这种修改自然不希望提交到 Git 仓库中。

但由于文件已经被 Git 管理,.gitignore 对于它们是无效的!我们在执行 git status 的时候,总能看到它们被修改的状态,尤其是存在这种情况的文件很多时(比如一个文件夹下所有的文件都存在希望被忽略的修改),git statusgit diff 的结果会十分混乱,干扰我们本想关注的修改。而且我们在 git add 的时候,还需要格外注意排除这些修改,防止误将它们提交到仓库。

如何使 Git 忽略掉这些已经被仓库管理的文件的修改呢?

解决方法

参见 stackoverflow: Ignore files that have already been committed to a Git repository

使用以下命令可以在本地目录中忽略掉指定文件的修改:

git update-index --assume-unchanged <file>

撤销忽略的命令:

git update-index --no-assume-unchanged <file>

查询被忽略的文件:

git ls-files -v | grep "^[[:lower:]]"

利用命令别名,方便查询被忽略的文件:

git config --global alias.ignored '!git ls-files -v | grep "^[[:lower:]]"'
# 执行 git ignored 即可查询被忽略的文件
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值