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

您所在的位置:网站首页 git忽略文件夹及文件的命令 【Git】忽略已被仓库管理的文件的修改

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

2024-07-05 16:11| 来源: 网络整理| 查看: 265

问题描述

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

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

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

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

解决方法

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

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

git update-index --assume-unchanged

撤销忽略的命令:

git update-index --no-assume-unchanged

查询被忽略的文件:

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

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

git config --global alias.ignored '!git ls-files -v | grep "^[[:lower:]]"' # 执行 git ignored 即可查询被忽略的文件


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3