GIT快速合并工具
2018-11-08 本文已影响0人
lnts
GIT快速合并工具
由来:
在日常开发中我发现一个我们在重复做的事情,我们经常把开发完功能的源分支 合并推送到 目标分支(我们常手动合并的目标分支有:master 和 staging)
自己回想一下是不是这样呢?
设计思路:
- 新建一个目录,用于分支的合并、推送。
- 只能同时进行一个目标分支的合并、推送。
整体流程
1、选择目标分支 -> 2、输入源分支 -> 3、git checkout && git pull -> 4、git merge -> 5、git push
第一步:选择目标分支
targetBranchName="master"
echo " "
echo "请选择目标分支? 输入数字: 1 或者 2"
echo "1 master"
echo "2 staging"
read number
case $number in
1)echo "你选择目标分支是: master" && targetBranchName="master"
;;
2)echo "你选择目标分支是: staging" && targetBranchName="staging"
;;
esac
第二步:输入源分支
read -p "输入源分支名称: " sourceBranchName
第三步:git checkout 目标分支 && git pull
if git checkout ${targetBranchName} && git pull
then
echo -e "git pull ${TEXT_GREEN}finished${TEXT_NC}" && stepFour
else
echo "${TEXT_RED}git checkout or git pull 失败!${TEXT_NC}"
fi
第四步:git merge
echo "run git merge"
if git merge origin/${sourceBranchName}
then
echo -e "run git merge ${TEXT_GREEN}finished${TEXT_NC}" && stepFive
else
echo -e "${TEXT_RED} git merge 失败。查看上文提示,请回到项目工程手动处理${TEXT_NC}"
git merge --abort
fi
第五步:git push 并且打开 deployer
git push &&
echo -e "-------step5: git push ${TEXT_GREEN}finished${TEXT_NC} \n合并${targetBranchName}完成,去重启吧!"
deployerUrl=""
if [ ${targetBranchName} == 'staging' ]; then
deployerUrl=""
fi
start "chrome" ${deployerUrl}
完整代码:
#!/bin/bash
#更改为自己的目录地址
cd F://workspaces/bat/test
pwd
## text color
TEXT_RED="\033[31m"
TEXT_GREEN="\033[32m"
TEXT_NC="\033[0m"
echo -e "\033[32m 欢迎使用自动合并工具 \033[0m"
targetBranchName="master"
echo " "
echo "请选择目标分支? 输入数字: 1 或者 2"
echo "1 master"
echo "2 staging"
read number
case $number in
1)echo "你选择目标分支是: master" && targetBranchName="master"
;;
2)echo "你选择目标分支是: staging" && targetBranchName="staging"
;;
esac
read -p "输入源分支名称: " sourceBranchName
stepFour(){
echo "-------step4: run git merge"
if git merge origin/${sourceBranchName}
then
echo -e "-------step4: run git merge ${TEXT_GREEN}finished${TEXT_NC}" && stepFive
else
echo -e "${TEXT_RED} git merge 失败。查看上文提示,请回到项目工程手动处理${TEXT_NC}"
git merge --abort
fi
}
stepFive(){
echo "-------step5: run git push"
echo -e "${TEXT_GREEN}run git status${TEXT_NC}"
git status
seconds_left=6
echo "请确认...马上执行git push"
while [ $seconds_left -gt 0 ];do
echo -n $seconds_left
sleep 1
seconds_left=$(($seconds_left - 1))
echo -ne "\r \r" #清除本行文字
done
git push &&
echo -e "-------step5: git push ${TEXT_GREEN}finished${TEXT_NC} \n合并${targetBranchName}完成,去重启吧!"
deployerUrl=""
if [ ${targetBranchName} == 'staging' ]; then
deployerUrl=""
fi
start "chrome" ${deployerUrl}
}
if [ ! ${sourceBranchName} ]; then
echo -e "${TEXT_RED} 源分支名称不能为空,请重新输入!!"
else
echo -n "你输入的分支名称: " ${sourceBranchName}
echo ' 目标分支: ' ${targetBranchName}
echo -e ${TEXT_RED}${sourceBranchName}${TEXT_NC} ${TEXT_GREEN}"分支合并到"${TEXT_NC} ${TEXT_RED}${targetBranchName}${TEXT_NC} ${TEXT_GREEN}"分支 马上开始... ${TEXT_NC}"
seconds_left=6
echo "请确认..."
while [ $seconds_left -gt 0 ];do
echo -n $seconds_left
sleep 1
seconds_left=$(($seconds_left - 1))
echo -ne "\r \r" #清除本行文字
done
echo "-------step1: run git pull"
if git checkout ${targetBranchName} && git pull
then
echo -e "-------step1: git pull ${TEXT_GREEN}finished${TEXT_NC}" && stepFour
else
echo "${TEXT_RED}git checkout or git pull 失败!${TEXT_NC}"
fi
fi
运行
运行你保存的.sh 文件就行。