GIT快速合并工具

2018-11-08  本文已影响0人  lnts

GIT快速合并工具

由来:

在日常开发中我发现一个我们在重复做的事情,我们经常把开发完功能的源分支 合并推送到 目标分支(我们常手动合并的目标分支有:master 和 staging)
自己回想一下是不是这样呢?

设计思路:

  1. 新建一个目录,用于分支的合并、推送。
  2. 只能同时进行一个目标分支的合并、推送。

整体流程

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 文件就行。

上一篇下一篇

猜你喜欢

热点阅读