单分支克隆的Git仓库如何拉取其他远程分支并迁移未提交修改
操作步骤
你之前的两个报错原因很明确:重新克隆报错是因为同路径下已经存在本地仓库目录,完全不需要重复克隆;git fetch v1.1.2报错是因为命令语法错误,fetch的第一个参数需要传远程仓库别名(默认是origin),不能直接写分支名,加上你初始克隆用了--single-branch参数,默认配置下只会拉取你指定的v1.1.1单分支内容,按以下步骤操作即可:
- 第一步:进入本地仓库根目录,修改远程仓库的拉取配置,允许拉取所有远程分支,再拉取最新的远程分支数据
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" git fetch origin
- 第二步:暂存当前所有未提交的本地改动,避免切换分支时改动丢失或产生异常冲突
git stash push -m "temp local changes for v1.1.2"
执行完该命令后,当前v1.1.1分支的工作区会回到干净状态。
- 第三步:基于远程的v1.1.2分支创建本地跟踪分支并切换
Git 2.23及以上版本用switch命令:
git switch -c v1.1.2 --track origin/v1.1.2
老版本Git用checkout命令:
git checkout -b v1.1.2 origin/v1.1.2
- 第四步:把之前暂存的本地改动恢复到当前v1.1.2分支的工作区
git stash pop
补充说明
- 如果执行
git stash pop时提示代码冲突,按常规冲突处理流程解决即可:手动编辑冲突文件保留需要的内容,删除冲突标记后执行git add <冲突文件名>,改动就会正常留在v1.1.2分支。 - 迁移完成确认改动正常后,如果不需要本地原有的v1.1.1分支,可以执行
git branch -D v1.1.1删除,不会影响v1.1.2分支的内容。
内容的提问来源于stack exchange,提问作者JFirmware
相关产品推荐
相关产品推荐

