git分支合并脚本

  • 为什么要写这个脚本
    • 工作中经常会有合并分支的操作,一开始也不以为然,后来发现如果更新频繁的话,根本就停不下来,昨天上午正好有空,就完成了下面的这个初版
  • 可能存在的问题
    • 一般的应用场景都是:从master分支里面拉取出新feature,bug, release分支,如果分支完成,则需要先合并在test分支里面,test分支测试完成后,合到master分支里面,这时候可能并不会直接上线,还有一个preview环境,其实这里用到的代码和线上一样,都是master里面的,那么问题来了
    • 如果有两个人共同用一个分支开发,他刚更新的代码在测试上没有问题,过一段时间测试完成了,通知运维人员可以上预发布环境了,但是这个时候该功能分支的另外一个正好又提交了一个commit,这时会把最新的版本也合并了,说了半天,才说到重要,也就是每次合并之前都会有个pull --rebase操作
    • 当然也可以再创建一些函数之类的,但是这样就失去了脚本的便利性,后面加一堆操作也不是很好,如果博友有好的建议,欢迎探讨^ _^一般只需要mb dev_xxx_fix_xxx test就搞定了,额,这个名字是我建的一个软链没有其它的意思,only first letter of the merge branch
#!/bin/sh
# Author: zhang.wen
# Date: 2017-03-23 13:03
# VersionControlTools: git
#******************************
# $1 表示功能分支
# $2 要合并到的分支[ test|master ]
#******************************
# 退出状态码:
# -1表示没有找到此分支
# -2表示代码执行异常

MERGE_BRANCH=$1
TARGET_BRANCH=$2

function last_status()
{
    if [ $? -eq 0 ]
    then
        return 0
    else
        exit -2 
    fi
}

function pull_latest_branch()
{
    if git checkout $1 && git pull --rebase 
    then
        last_status
    fi
}

function check_branch()
{
    if git branch | grep -q $1
    then
        return 0
    else
        echo "没有找到此分支, 现在从远程分支上拉取至本地"
        pull_latest_branch
        if git branch -rv | grep $1
        then
            git checkout -b $1 origin/$1
        fi
    fi
}


# $1表示要合并到的分支[目标分支],$2表示要合并的分支
function merge_branch()
{
    if git checkout $1 && pull_latest_branch $1 && git merge $2
    then
        last_status
    fi
}

# 接收一个参数,要推送的目标分支
function push_branch()
{
    if git push origin $1 && git status
    then
        last_status
    fi
}

function show_commit_id()
{
    git log | head -5
}

function new_line()
{
    echo 
}

if [ $# -eq 0 ]
then
    echo '请输入要合并的分支名, 用法如下:'
    echo "$0 src_branch dst_branch"
    exit 0
fi

echo -e "\\033[0;31;1m当前摘取的分支是:\\033[0m $MERGE_BRANCH"
echo -e "\\033[0;31;1m要合并到的分支是:\033[0m $TARGET_BRANCH"
check_branch $MERGE_BRANCH
new_line

echo -e "拉取\\033[0;32;1m $MERGE_BRANCH\\033[0m 最新代码"
pull_latest_branch $MERGE_BRANCH
new_line

echo -e "切换到\\033[0;32;1m $TARGET_BRANCH \\033[0m分支,合并\\033[0;32;1m $MERGE_BRANCH\\033[0m 最新代码"
merge_branch $TARGET_BRANCH $MERGE_BRANCH
push_branch $TARGET_BRANCH
new_line

echo -e "\\033[0;31;1m------------------ COMMIT ID ------------------\\033[0m"
show_commit_id

转载于:https://www.cnblogs.com/ZhangRuoXu/p/6616514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值