大家都知道 git 忽略文件提交可以通过 .gitignore 中进行配置。但是有时这个配置并不能满足自己的需求。
比如 package.json 中我修改了一些配置,但是这些配置只是适合我自己使用,而同事不喜欢用,我就希望我本地的 package.json 不提交到远程仓库。这时通过配置 .gitignore 也是不合理的,那么应该怎么办呢?
下面就介绍4中忽略 git 提交的姿势:
- .gitignore
- 说明:显式地阻止提交文件。
- 优势:.gitignore 文件本身提交至远程仓库,全组共享忽略文件配置。
- 局限:如果项目已经存在远程仓库,即使被加入 .gitignore,仍然可以进行修改并提交。本地的修改会显示在 git status 结果中。
- .git/info/exclude
- 说明:显式地阻止提交文件。
- 优势:exclude 文件本身不会提交至远程仓库,因此适合放一些个人定制的 「gitignore」 项目。
- 局限:和 .gitignore 存在同样地局限。文件若已存在远程仓库,则本地修改仍可以提交至远程仓库。本地的修改会显示在 git status 结果中。
- assume-unchanged
- 说明:声明本地远程都不会修改这个文件。
- 优势:git 直接跳过这些文件的处理以提升性能。文件不会出现在 git status。
- 局限:不适合本地或远程需要修改的文件。本地会忽略掉之后远程文件的修改。
- skip-worktree
- 说明:声明忽略文件的本地修改。
- 优势:本地可以对文件做一些个人定制。文件不会出现在 git status。
- 局限:拉取远程文件更新,或切换分支时有可能出现冲突,需要撤销忽略后手动解决冲突。
之前想的是通过 exclude 排除,后来才知道远程仓库上有的文件 exclude 也没用,应该用 skip-worktree。