在团队 Git 项目中隐藏个人文档文件夹

橘子 发布于 2026-09-10 15 次阅读


背景

有一个团队项目文件夹(比如 project),是团队共同维护的 git 仓库。我在其中创建了一个本地只给自己看的私人文件夹(比如 local_docs),存放只给自己看的文档。

下文的叙述用"团队项目文件夹""私人文件夹"指代两者;命令示例中使用 project 和 local_docs 这两个名字,实际操作时替换成实际的文件夹名即可。

希望达成三件事:

  1. 向团队仓库提交时,完全忽略私人文件夹,个人文档不会混进团队提交;
  2. 不修改团队项目文件夹的 .gitignore——它是团队共享文件,不应为个人需求改动;
  3. 团队项目文件夹和私人文件夹各自使用独立的 git:外层走团队仓库,内层自己管理版本历史,互不干扰。

操作步骤

第一步:让团队仓库忽略私人文件夹(不改 .gitignore)

cd project
echo "local_docs/" >> .git/info/exclude

.git/info/exclude 是每个 git 仓库自带的忽略文件,语法和 .gitignore 完全一样(一行一条规则)。区别在于:它存放在 .git 目录内部,只属于本地这一份副本,不会被提交、队友也看不到——正好满足"不动共享的 .gitignore 也能忽略"的需求。

第二步:在私人文件夹内初始化独立 git

cd project/local_docs
git init

之后在私人文件夹内正常使用 git 进行版本管理即可。

第三步:验证

验证外层已忽略:

# 验证外层已忽略
cd project
git status                          # 不应出现 __local_docs
git check-ignore -v __local_docs    # 应输出一条来自 .git/info/exclude 的规则

# 验证内层独立
cd project/__local_docs
git rev-parse --show-toplevel       # 应输出 __local_docs 的路径,而不是 project

注意事项

.git/info/exclude 只对当前这一份仓库副本生效。如果以后在别处重新克隆了团队项目,需要重新添加这一行。只在一台机器上维护一份副本的话,配置一次即可。

此外,如果一个文件已经被提交进仓库,exclude(和 .gitignore)对它都不起作用,需要先用 git rm --cached 把它从仓库记录中移除。如果文件夹是新建的、从未被提交过,不存在这个问题;但要注意顺序——先加忽略规则,不要先提交再补救。