【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" ]; then
    echo "错误:目录 $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 1

git branch -r | grep -v '\->' | while read -r remote; do
    branch_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 "导出完成!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值