【git】在Linux系统下clone指定分支

文章目录

      • 0.首先查看远端服务器,远程分支列表:
      • [**1. 简化分支名称(去掉 `refs/heads/` 前缀)**](#1. 简化分支名称(去掉 refs/heads/ 前缀))
      • [**2. 检查 Git 版本**](#2. 检查 Git 版本)
      • [**3. 使用完整克隆后切换分支**](#3. 使用完整克隆后切换分支)
      • [**4. 调试网络/服务器问题**](#4. 调试网络/服务器问题)
      • [**5. 联系仓库管理员**](#5. 联系仓库管理员)
      • **总结步骤**

正确格式:git clone -b 正确的分支名 ssh://git@xxxx.01:2200/tws/ris.git

0.首先查看远端服务器,远程分支列表:

bash 复制代码
git ls-remote --heads ssh://git@xxx.01:2200/tws/ris.git

输入指令执行:

遇到错误:

根据 git ls-remote --heads 的输出,分支 sdk5.6.0_remove_minios 确实存在于远程仓库(哈希值 18a7e728f1...),但克隆时却报错 not found。这可能是由于 Git 版本或服务器配置的兼容性问题。以下是解决方案:


1. 简化分支名称(去掉 refs/heads/ 前缀)

Git 的 -b 参数只需要分支名,无需完整路径。
错误命令

bash 复制代码
git clone -b refs/heads/sdk5.6.0_remove_minios ssh://git@10xxxxx2200/tws/ris.git

正确命令

bash 复制代码
git clone -b sdk5.6.0_remove_minios ssh://git@10xxxxxx90:2200/tws/ris.git

2. 检查 Git 版本

某些旧版 Git 对分支名解析存在问题。升级 Git:

bash 复制代码
git --version  # 确认版本
sudo apt-get update && sudo apt-get install git -y  # Ubuntu/Debian

3. 使用完整克隆后切换分支

如果直接克隆仍失败,尝试先克隆默认分支再切换:

bash 复制代码
git clone ssh://git@xxxx:2200/tws/ris.git
cd ris
git checkout sdk5.6.0_remove_minios

4. 调试网络/服务器问题

错误 the remote end hung up unexpectedly 可能是网络或服务器问题:

  • 检查 SSH 连接

    bash 复制代码
    ssh -T git@xxxxx -p 2200  # 测试SSH连通性
  • 启用详细日志

    bash 复制代码
    GIT_TRACE=1 GIT_SSH_COMMAND="ssh -v" git clone -b sdk5.6.0_remove_minios ssh://git@1xxxxx.90:2200/tws/polaris.git

5. 联系仓库管理员

如果问题持续,可能是服务器端限制(如分支权限、存储空间不足等),需管理员协助检查:

  • 仓库的 upload-pack 服务是否正常。
  • 分支是否被意外隐藏或删除。

总结步骤

  1. 首先查看远端服务器,远程分支列表:
  2. 直接使用分支名 (去掉 refs/heads/)。
  3. 升级 Git 到最新版本。
  4. 分步克隆(先克隆后切换分支)。
  5. 检查网络/SSH 或联系管理员。

正确格式:git clone -b 正确的分支名 ssh://git@xxxx.01:2200/tws/ris.git

如果仍有问题,请提供 GIT_TRACE=1 的完整输出日志。

相关推荐
不会就选b1 分钟前
Linux之线程池(三)
linux·开发语言
Sylvia-girl7 分钟前
【一】:Linux基础指令
linux·运维·服务器
KKKlucifer20 分钟前
运维域与IT域融合——云网安全一体化运营体系建设
大数据·运维·安全
0+11131 分钟前
Linux --基础IO
linux·运维·服务器
资深电气设计35 分钟前
雕铣机主轴驱动升级趋势分析:变频器技术价值与选型逻辑探讨
运维
M78佐菲1 小时前
Linux多线程:创建、回收与互斥同步
linux·笔记·学习·算法
名字还没想好☜1 小时前
Prometheus 告警实战:写 alerting rules、用 Alertmanager 做路由分组与抑制
运维·前端·javascript·docker·kubernetes·prometheus
sunoo-2291 小时前
【Linux 系统编程】学习第七天:线程属性 | 互斥锁 | 死锁 | 信号量 核心知识点 + 踩坑实战
linux·c语言·笔记·vscode·学习
Zkaisen1 小时前
【Gitee】SSH 公钥、GPG 公钥、私人令牌的区别
运维·gitee·ssh
小雪崩1 小时前
嵌入式学习 day33:线程进阶
linux·c语言·学习