git 快捷合并&提交脚本

自己用的Git快速合并&提交脚本。

使用方式

提交测试分支

git-push t

提交发布分支

git-push m

发布版本

git-push tag v1.0

脚本内容

#!/bin/bash
BR_TEST="test"
BR_RELEASE="master"
BR_DEVELOPMENT="$(git config --get user.name)/dev"

CMD=${1}

SOURCE_BR=""
TARGET_BR=""
TARGET_TAG=""

if [[ "${CMD}" == "tag" ]]; then
    SOURCE_BR="${BR_RELEASE}"
    TARGET_BR=""
    TARGET_TAG=${2}
    
    if [[ -z "${TARGET_TAG}" ]]; then
        echo ">>>>> ERROR: The parameter <tag> not found. example: git-push tag v1.0"
        exit -1;
    fi
elif [[ "${CMD}" == "t" || "${CMD}" == "test" ]]; then
    SOURCE_BR="${BR_DEVELOPMENT}"
    TARGET_BR="${BR_TEST}"
elif [[ "${CMD}" == "m" || "${CMD}" == "master" ]]; then
    SOURCE_BR="${BR_TEST}"
    TARGET_BR="${BR_RELEASE}"
else
    echo ">>>>> ERROR: The parameter format is incorrect. The parameter must be: [ <r or recreate>, <t or test>, <m or master>, tag <tag> ]"
    exit -1;
fi

echo ">>>>> INFO: Update source branch [${SOURCE_BR}]"
git checkout ${SOURCE_BR} --quiet && git pull
if [ $? -ne 0 ]; then
    echo ">>>>> ERROR: Update branch [${SOURCE_BR}] failed"
    exit $?;
fi

# Add Tag SOURCE_BR => TARGET_TAG
if [[ -n "${TARGET_TAG}" ]]; then
    echo ">>>>> INFO: Add tag ${SOURCE_BR}:<${TARGET_TAG}>"
    git tag ${TARGET_TAG} && git push origin ${TARGET_TAG}
    if [ $? -ne 0 ]; then
        echo ">>>>> ERROR: Add tag ${SOURCE_BR}:<${TARGET_TAG}> failed"
        exit $?;
    fi
fi

# Merge SOURCE_BR => TARGET_BR
if [[ -n "${TARGET_BR}" ]]; then 
    echo ">>>>> INFO: Update target branch [${TARGET_BR}]"
    git checkout ${TARGET_BR} --quiet || (git checkout -b ${TARGET_BR} && git branch --set-upstream-to=origin/${TARGET_BR})
    if [ $? -ne 0 ]; then
        echo ">>>>> ERROR: Update branch [${TARGET_BR}] failed"
        exit $?;
    fi

    MERGE_MESSAGE="--log"
    if [[ -n "${2}" ]]; then
        MERGE_MESSAGE="-m '${2}'"
    fi

    echo ">>>>> INFO: Create merge request [${SOURCE_BR}] => [${TARGET_BR}]"
    git merge ${SOURCE_BR} ${MERGE_MESSAGE} && git push origin ${TARGET_BR}
    _EXITCODE_=$?
    if [ $_EXITCODE_ -ne 0 ]; then
        echo ">>>>> ERROR: Create merge request [${SOURCE_BR}] => [${TARGET_BR}] failed, exit code: ${_EXITCODE_}"
        exit $?;
    fi
fi

# Recreate devlop branch BR_DEVELOPMENT
if [[ "${TARGET_BR}" == "${BR_TEST}" && "${SOURCE_BR}" == "${BR_DEVELOPMENT}" ]]; then 
    echo ">>>>> INFO: Delete devlop branch [${SOURCE_BR}]"
    git branch -D "${BR_DEVELOPMENT}" --quiet || echo ">>>>> WARN: local branch [${BR_DEVELOPMENT}] not exist"
    git push -d origin "${BR_DEVELOPMENT}" --quiet || echo ">>>>> WARN: remote branch [${BR_DEVELOPMENT}] not exist"
        
    echo ">>>>> INFO: Create devlop branch [${SOURCE_BR}]"
    git checkout -b "${BR_DEVELOPMENT}" --quiet && git branch --set-upstream-to=origin/${BR_DEVELOPMENT} --quiet
    if [ $? -ne 0 ]; then
        echo ">>>>> ERROR: create branch [${BR_DEVELOPMENT}] failed"
        exit $?;
    fi
fi

echo ">>>>> INFO: Switch to devlop branch [${BR_DEVELOPMENT}]"
git checkout ${BR_DEVELOPMENT} --quiet
if [ $? -ne 0 ]; then
    echo ">>>>> ERROR: Switch to devlop branch [${BR_DEVELOPMENT}] failed"
    exit $?;
fi

echo ">>>>> INFO: Create merge request [${SOURCE_BR}] => [${TARGET_BR}] success!"

#REMOTE_BRANCH=`git branch -r`
# (for i in $REMOTE_BRANCH
# do
#     if [[ $i =~ ^origin\/[a-z]+\/dev$ ]]; then
#         echo ">>>>> ====================merge $i===================="
#        git merge --no-edit $i
#     fi
# done) &&
# git push origin ${SOURCE_BR}
# if [ $? -ne 0 ]; then
#     exit $?;
# fi
# echo ">>>>> merge origin/*/dev branch and publsh code to ${SOURCE_BR} success!" 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值