当前位置: 首页 > news >正文

【git】获取特定分支和所有分支

1 特定分支

1.1 克隆指定分支(默认只下载该分支)

git clone -b <分支名> --single-branch <仓库URL>

示例(克隆 某一个 分支):

git clone -b xxxxxx --single-branch xxxxxxx
  • -b :指定分支

  • --single-branch:仅克隆该分支(节省时间空间)

1.2 克隆后切换到另一个分支(如果已克隆仓库)

如果已经克隆了仓库,想切换到其他分支:

git fetch origin <分支名>  # 先获取分支信息
git checkout <分支名>     # 切换到该分支

示例(切换到 lesson-2):

git fetch origin lesson-2
git checkout lesson-2

2 所有分支

git clone xxx
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

举一反三:

比如我有一个需求:下载博主的教学源码,就用到了git获取分支的知识,具体需求是在克隆每一个分支的同时想对每一个分支都创建一个文件夹,又不会bash命令,就可以在ai的帮助下

 成功编写一个sh文件完成我的需求:

#!/bin/bash
set -e  # 任何命令失败则退出
set -x  # 打印执行的命令(调试模式)# 仓库配置
REPO_URL="https://github.com/iamshaunjp/bootstrap-5-tutorial.git"
REPO_NAME="bootstrap-5-tutorial"
BRANCHES_DIR="../branches"# 1. 克隆仓库(仅默认分支)
echo "步骤1/4: 克隆仓库..."
if [ -d "$REPO_NAME" ]; thenecho "错误:目录 $REPO_NAME 已存在,请删除或重命名!"exit 1
fi
git clone "$REPO_URL" "$REPO_NAME" || {echo "克隆失败!请检查网络或仓库URL。"exit 1
}
cd "$REPO_NAME" || exit 1# 2. 获取所有远程分支
echo "步骤2/4: 获取所有远程分支..."
git fetch --all || {echo "获取分支失败!"exit 1
}# 3. 遍历每个远程分支并导出文件
echo "步骤3/4: 导出各分支到 $BRANCHES_DIR/..."
mkdir -p "$BRANCHES_DIR" || exit 1git branch -r | grep -v '\->' | while read -r remote; dobranch_name="${remote#origin/}"target_dir="$BRANCHES_DIR/$branch_name"echo "----------------------------------------"echo "正在处理分支: $branch_name"echo "目标目录: $(pwd)/$target_dir"# 创建分支目录mkdir -p "$target_dir" || {echo "创建目录失败: $target_dir"exit 1}# 切换到分支git checkout "$branch_name" 2>&1 | tee -a ../branch_log.txt || {echo "切换分支失败: $branch_name"exit 1}# 复制文件(排除.git)echo "复制文件中..."cp -r ./* "$target_dir/" 2>&1 | tee -a ../copy_log.txt || {echo "复制文件失败: $branch_name"exit 1}echo "完成: $branch_name -> $target_dir"echo "文件数量: $(ls -1 "$target_dir" | wc -l)"
done# 4. 最终检查
echo "步骤4/4: 验证导出结果..."
echo "----------------------------------------"
echo "所有分支已导出到: $(pwd)/$BRANCHES_DIR"
echo "分支列表:"
ls -1 "$BRANCHES_DIR"
echo "----------------------------------------"
echo "导出完成!"

相关文章:

  • 【Linux深入浅出】之全连接队列及抓包介绍
  • 阿里云服务器防御是怎么做出来的?服务器攻击方式有几种?
  • Java文件上传
  • 【算法基础】选择排序算法 - JAVA
  • ARM 指令集(ubuntu环境学习)第六章:ARM 编程技巧与优化策略
  • 供应链算法整理(一)--- 销量预估
  • 如何掌握 Lustre/Scade 同步数据流语言
  • 基于建造者模式的信号量与理解建造者模式
  • 每日算法-250502
  • Python爬虫实战:获取好大夫在线各专业全国医院排行榜数据并分析,为患者就医做参考
  • 传统银行服务和 区块链支付无缝融合的一种解决方案
  • 【AI面试准备】数据治理与GDPR脱敏机制构建
  • 4.Java中的注释
  • VBA宏即根据第一列的内容和第二列的数字,按照数字数量生成对应内容并依次放在第三列、第四列等
  • c++环境和vscode常用的一些有用插件
  • Qt C++简单图形界面与绘图实验
  • 开闭原则与依赖倒置原则区别:原类不变,新增类(功能)vs 接口类不变,原实现类可变
  • 算法篇(九)【滑动窗口】
  • 《筑牢防线:全方位守护移动应用免受逆向侵扰》
  • linux下如何在一个录目中将一个文件复制到另一个录目,删除目录
  • 马克思主义理论研究教学名师系列访谈|薛念文:回应时代课题,才能彰显强大生命力
  • 贵州赤水丹霞大瀑布附近山体塌方车辆被埋,景区:无伤亡,道路已恢复
  • 三大猪企一季度同比均实现扭亏为盈,营收同比均实现增长
  • 中国海油总裁:低油价短期影响利润,但也催生资产并购机会
  • 云南铁路:打造“铁路+金融+产业”融合发展生态
  • 2025年度中国青年五四奖章暨新时代青年先锋奖评选揭晓