分支重建脚本

140 阅读1分钟

rebuild-branch.sh

重建分支脚本

1、打开git bash

2、从根目录执行 ./doc/rebuild-branch.sh 或者进入doc目录执行 ./rebuild-branch.sh

3、如果出现冲突,自行根据列出的冲突文件打开vscode修改,标记 incomming 是你代码

4、在git bash中继续输入y继续执行,输入n放弃所有

5、如果继续执行完毕,会在本地生成一个分支,名字是当前名+时间,留做安全自查,也可直接删除

#!/bin/bash
echo "重建分支开始 !"

branch="$(git rev-parse --abbrev-ref HEAD)"

if [[ "$branch" == "master" ]]; then
    echo "当前分支是master,请切换到你的工作分支"
    exit
else
    echo "当前分支是$branch"
fi

git checkout master

git pull

result="$(git merge $branch --no-commit --no-ff)"

if [[ $result == *conflict* ]];then
    echo "失败!存在冲突,请自行打开vscode解决,解决完后,输入y继续执行,输入n放弃并退出!"
    git merge --continue
    echo "【请输入y/n】?y 我已解决完  n 放弃合并"
    read constep
    if [[ "$constep" == "y" ]];then
        echo "您选择了我已解决完继续执行"
        git add .
        git stash
        # result=`git merge --continue`
    else 
        echo "您选择了放弃合并,自动退出"
        git merge --abort
        git checkout $branch
        exit
    fi
else
    git stash
fi

# git merge --abort

git checkout $branch

echo "【请输入y/n】合并正常,是否应用存储?"
read ispopstash
if [[ "$ispopstash" == "y" ]];then
    newbranch="$branch-$(date "+%d-%H-%M-%S")"
    echo $newbranch
    git branch -m $branch $newbranch

    git checkout master

    git checkout -b $branch

    echo "【请输入y/n】分支已备份,从master新建的纯净分支(这次未应用存储),是否推送到服务器?"
    read puremaster
    if [[ "$puremaster" == "y" ]];then
        echo "推送纯净分支"
        git push -f --set-upstream origin $branch
    else
        echo "未推送纯净分支,后续可一起推"
    fi

    git stash pop

    echo "【请输入y/n】已应用存储,是否推送到服务器?"
    read ispush
    if [[ "$ispush" == "y" ]];then
        dname=`basename "$PWD"`
        if [[ $dname == "doc" ]];then
            git add ../.
        else 
            git add .
        fi

        git commit -m "feature: 新建分支$branch"

        if [[ "$puremaster" == "y" ]];then
            git push -f
        else
            git push -f --set-upstream origin $branch
        fi

        echo "重建完成,本地原分支备份为$newbranch可移除"
    else
        echo "您选择了放弃推送,请手动推送后续操作"
        exit
    fi
else
    echo "您选择了放弃合并,自动退出"
    exit
fi