使用--single-branch仅克隆dev分支后如何拉取干净的远程main分支
问题原因说明
你之前拉取的main分支携带dev分支文件,并非拉取的远程分支本身有问题,是因为操作时工作区存在dev分支的未提交变更,Git默认会保留未提交的变更跨分支移动,提前提交或暂存dev的所有修改即可避免该问题。
具体操作步骤
- 第一步:保存当前dev分支的所有本地变更
执行git status检查工作区状态,所有未提交的修改可选择执行git commit提交到本地dev分支,或是执行git stash临时暂存变更 - 第二步:给本地仓库新增远程main分支的跟踪权限(因为--single-branch克隆的仓库默认仅允许拉取dev分支)
执行git remote set-branches --add origin main,该操作仅新增main分支的拉取规则,不会拉取其他50多个无关分支 - 第三步:拉取远程main分支的最新纯净代码
执行git fetch origin main - 第四步:创建本地main分支并绑定远程跟踪关系
执行git switch --create main origin/main
验证方式
- 执行
git log --oneline -10,可对比提交记录和远程GitHub上的main分支完全一致,无多余的dev分支提交 - 执行
git branch -vv,可看到main分支已配置上游为origin/main,后续直接执行git pull即可拉取远程main的最新更新 - 执行
git switch dev可随时切回原开发分支,两个分支代码完全独立互不干扰
内容的提问来源于stack exchange,提问作者Viet
相关产品推荐
相关产品推荐

