如何在同一文件夹树中使用两个互忽略文件的独立Git仓库?
同一目录树中独立管理两个Git仓库的简便方案
核心思路
在Workspace目录下,为Repo A和Repo B分别创建独立的Git配置目录(避免共用一个.git),通过配置让每个仓库只关注对应类型的文件夹,同时给Git客户端创建专属快捷方式,新手无需手动切换环境变量。
具体操作步骤
1. 初始化Repo A(管理所有Folder A)
- 打开命令提示符(或Git Bash),进入
Workspace目录 - 执行以下命令,创建Repo A的专属Git目录(命名为
.git-repoA)并初始化:git init --separate-git-dir .git-repoA - 此时Workspace会生成一个
.git文件(这是Git的链接文件,指向.git-repoA),将其重命名为.git-repoA-link,避免和后续Repo B的文件冲突 - 在Workspace根目录创建
.gitignore-repoA文件,配置忽略规则:# 忽略所有Folder B */Folder B/ # 忽略Repo B的Git相关文件 .git-repoB* - 执行命令让Repo A使用这个忽略文件:
git --git-dir=.git-repoA --work-tree=. config core.excludesfile .gitignore-repoA - 将所有Folder A添加到Repo A并提交:
git --git-dir=.git-repoA --work-tree=. add */Folder A/ git --git-dir=.git-repoA --work-tree=. commit -m "初始化Repo A,提交所有Folder A文件" - 关联远程Repo A:
git --git-dir=.git-repoA --work-tree=. remote add origin <你的Repo A远程地址> git --git-dir=.git-repoA --work-tree=. push -u origin main
2. 初始化Repo B(管理所有Folder B)
- 回到
Workspace目录,执行以下命令创建Repo B的专属Git目录(命名为.git-repoB)并初始化:git init --separate-git-dir .git-repoB - 将生成的
.git文件重命名为.git-repoB-link - 在Workspace根目录创建
.gitignore-repoB文件,配置忽略规则:# 忽略所有Folder A */Folder A/ # 忽略Repo A的Git相关文件 .git-repoA* - 执行命令让Repo B使用这个忽略文件:
git --git-dir=.git-repoB --work-tree=. config core.excludesfile .gitignore-repoB - 将所有Folder B添加到Repo B并提交:
git --git-dir=.git-repoB --work-tree=. add */Folder B/ git --git-dir=.git-repoB --work-tree=. commit -m "初始化Repo B,提交所有Folder B文件" - 关联远程Repo B:
git --git-dir=.git-repoB --work-tree=. remote add origin <你的Repo B远程地址> git --git-dir=.git-repoB --work-tree=. push -u origin main
3. 给Git客户端创建快捷方式,实现一键操作
针对TortoiseGit:
- 右键桌面→新建→快捷方式,输入以下内容(替换为你的Workspace路径):
TortoiseGitProc.exe /command:log /path:"C:\你的Workspace路径" /gitdir:"C:\你的Workspace路径\.git-repoA" - 命名为
TortoiseGit-Repo A,双击即可直接打开Repo A的操作界面,所有操作仅关联Repo A - 同理创建Repo B的快捷方式,将
.git-repoA替换为.git-repoB即可
针对SourceTree:
- 打开SourceTree,点击「添加仓库」,在「路径/URL」中选择你的Workspace目录,在「高级选项」里将「Git仓库路径」设置为
C:\你的Workspace路径\.git-repoA - 保存为Repo A的仓库条目,后续直接点击该条目即可操作Repo A
- 重复上述步骤添加Repo B的条目,选择对应的
.git-repoB路径
4. 克隆Repo B单独获取B类文件
- 直接克隆远程Repo B到本地任意目录:
git clone <你的Repo B远程地址> - 克隆后本地会自动生成包含所有
Folder 1~n/Folder B的目录结构,与原Workspace的B类文件结构完全一致
日常操作注意事项
- 向Folder A添加新文件后,使用Repo A的快捷方式打开客户端提交即可,Repo B不会检测到这些文件
- 操作Folder B的文件时,使用Repo B的快捷方式
- 不要手动修改
.git-repoA、.git-repoB及对应的link文件,避免仓库关联出错
内容的提问来源于stack exchange,提问作者Spanakopita
相关产品推荐
相关产品推荐

