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