如何在同一目录下将不同本地文件夹分别存入独立的Git远程分支
解决方案
问题原因
你创建M02分支时是从已有内容的M01分支直接创建,Git默认会继承父分支的全部提交记录与文件内容,因此切换到M02分支时会显示M01的文件。
你执行git rm . -r时同时删除了暂存区与本地工作区的文件,且未在M02分支提交删除操作前就切换分支,删除状态会被带到其他分支,因此会出现两个分支文件都被移除的假象,切回M01分支执行git restore .即可恢复被误删的文件。
正确操作步骤
要实现每个分支仅存储对应文件夹的内容,需创建无父提交的孤儿分支,操作流程如下:
- 先确认当前工作区状态干净,所有
M01分支的变更已提交:
git status
- 创建
M02孤儿分支,该分支默认无任何提交历史:
git switch --orphan M02
- 清空暂存区继承自
M01的所有跟踪内容,该操作不会删除本地文件:
git rm --cached -r .
- 手动删除工作区中不需要的
M01文件夹,仅保留M02文件夹与你需要复用的.gitignore公共文件。 - 暂存
M02文件夹与公共文件:
git add M02/ .gitignore
- 提交
M02分支的专属内容:
git commit -m "First commit for M02 branch"
- 推送到远程仓库:
git push origin M02
后续操作说明
- 后续新增
M03、M04等分支时,重复上述孤儿分支创建流程即可。 - 分支切换时Git会自动替换工作区内容:切到
M01分支仅显示M01相关文件,切到M02分支仅显示M02相关文件,不会互相干扰。 - 涉及版本库文件删除操作时优先用
git rm --cached,仅移除Git跟踪关系不会删除本地文件,避免误删内容。
内容的提问来源于stack exchange,提问作者Ivan Silkin
相关产品推荐
相关产品推荐

