GIT快速合并工具
由來:
在日常開發(fā)中我發(fā)現(xiàn)一個(gè)我們在重復(fù)做的事情,我們經(jīng)常把開發(fā)完功能的源分支 合并推送到 目標(biāo)分支(我們常手動合并的目標(biāo)分支有:master 和 staging)
自己回想一下是不是這樣呢霜医?
設(shè)計(jì)思路:
- 新建一個(gè)目錄齿拂,用于分支的合并、推送肴敛。
- 只能同時(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 文件就行。