GIT快速合并工具

GIT快速合并工具

由來:

在日常開發(fā)中我發(fā)現(xiàn)一個(gè)我們在重復(fù)做的事情,我們經(jīng)常把開發(fā)完功能的源分支 合并推送到 目標(biāo)分支(我們常手動合并的目標(biāo)分支有:master 和 staging)
自己回想一下是不是這樣呢霜医?

設(shè)計(jì)思路:

  1. 新建一個(gè)目錄齿拂,用于分支的合并、推送肴敛。
  2. 只能同時(shí)進(jìn)行一個(gè)目標(biāo)分支的合并署海、推送。

整體流程

1、選擇目標(biāo)分支 -> 2叹侄、輸入源分支 -> 3巩搏、git checkout && git pull -> 4、git merge -> 5趾代、git push

第一步:選擇目標(biāo)分支

targetBranchName="master"
echo " "
echo "請選擇目標(biāo)分支? 輸入數(shù)字: 1 或者 2"
echo "1 master"
echo "2 staging"

read number
case $number in
1)echo "你選擇目標(biāo)分支是: master" && targetBranchName="master"
;;
2)echo "你選擇目標(biāo)分支是: staging" && targetBranchName="staging"
;;

esac

第二步:輸入源分支

read -p "輸入源分支名稱: "  sourceBranchName

第三步:git checkout 目標(biāo)分支 && 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 失敗撒强。查看上文提示禽捆,請回到項(xiàng)目工程手動處理${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 "請選擇目標(biāo)分支? 輸入數(shù)字: 1 或者 2"
echo "1 master"
echo "2 staging"

read number
case $number in
1)echo "你選擇目標(biāo)分支是: master" && targetBranchName="master"
;;
2)echo "你選擇目標(biāo)分支是: 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 失敗胚想。查看上文提示,請回到項(xiàng)目工程手動處理${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 "請確認(rèn)...馬上執(zhí)行g(shù)it 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 ' 目標(biāo)分支: ' ${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 "請確認(rèn)..."
    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

運(yùn)行

運(yùn)行你保存的.sh 文件就行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腕扶,一起剝皮案震驚了整個(gè)濱河市孽拷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌半抱,老刑警劉巖脓恕,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窿侈,居然都是意外死亡炼幔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門史简,熙熙樓的掌柜王于貴愁眉苦臉地迎上來江掩,“玉大人,你說我怎么就攤上這事乘瓤。” “怎么了胁塞?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵卵慰,是天一觀的道長抵窒。 經(jīng)常有香客問我,道長统抬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮聪建,結(jié)果婚禮上钙畔,老公的妹妹穿的比我還像新娘。我一直安慰自己金麸,他們只是感情好擎析,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挥下,像睡著了一般揍魂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棚瘟,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天现斋,我揣著相機(jī)與錄音,去河邊找鬼偎蘸。 笑死庄蹋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迷雪。 我是一名探鬼主播限书,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼振乏!你這毒婦竟也來了蔗包?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤慧邮,失蹤者是張志新(化名)和其女友劉穎调限,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體误澳,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耻矮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忆谓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裆装。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖倡缠,靈堂內(nèi)的尸體忽然破棺而出哨免,到底是詐尸還是另有隱情,我是刑警寧澤昙沦,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布琢唾,位于F島的核電站,受9級特大地震影響盾饮,放射性物質(zhì)發(fā)生泄漏采桃。R本人自食惡果不足惜懒熙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望普办。 院中可真熱鬧工扎,春花似錦、人聲如沸衔蹲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踪危。三九已至蔬浙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贞远,已是汗流浹背畴博。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蓝仲,地道東北人俱病。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像袱结,于是被迫代替她去往敵國和親亮隙。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容