美文网首页
GIT快速合并工具

GIT快速合并工具

作者: lnts | 来源:发表于2018-11-08 12:08 被阅读0次

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

    相关文章

      网友评论

          本文标题:GIT快速合并工具

          本文链接:https://www.haomeiwen.com/subject/sizixqtx.html