记录Git 中几种忽略控制的方式

忽略未追踪的文件

据我所知目前共有3种方式:

  • 1.编写由本仓库记录要忽略内容的.gitignore文件,并将该文件加入版本控制.

    这是最常见的方式,创建完一个仓库的第一件事就是把当前仓库存放的项目无关的文件或目录加入到.gitignore文件中,这些需要加入忽略的可以是编译的中间文件 或 构建结果 或 IDE相关的配置文件 或 当前平台的配置文件等,并在仓库在其他设备上拉取后也能应用相同相同的忽略配置.

  • 2.编写本仓库仅本地要忽略内容的$GIT_DIR/info/exclude文件,此配置不会加入到版本控制.

    这种方式也较常用,比如编写了一个仅本机可用的配置或某些执行脚本,但出于某些原因又不想更新或暴露在.gitignore文件中被他人所见,故可以添加到仓库配置文件夹的info/exclude文件中.

  • 3.编写本机本用户要所有仓库都忽略的$XDG_CONFIG_HOME/git/ignore文件,此配置同样不会加入到版本控制.

    这应该是最少使用的,但很这适合我这种懒人,我比较喜欢取同名的本地构建脚本,这种只需写一次就应用全局的方式让我很中意.

忽略文件的编写规则可以参见 官方指导.


忽略已追踪的文件

据我所知目前有两种方式:

  • 1.文件仍在版本控制中,也可拉取更新,但忽略本地对该文件的修改.

使用命令 git update-index --[no-]assume-unchanged <file> [file...] 添加要被忽略或撤销已被忽略的文件.
该方式适用仓库中存在类似模板配置之类的文件,需要手动修改后才可使用的情况,且并不需要将仅适用本机的改动覆盖掉仓库的模板。

  • 2.移除仓库中已被追踪的文件

使用命令git rm --cached <path> [path ...] 即可移除仓库对文件的所有追踪历史,注意这删除的不仅仅是文件还包括对文件的所有改动历史,该操作没有后悔药,执行后便无法还原文件的历史,只能重新添加.