此腳本適合在 MacOS 下工作
# 獲取當(dāng)前分支的名稱,在控制臺輸出霎桅,方便知道當(dāng)前是為哪個分支合并代碼
current_branch=`git rev-parse --abbrev-ref HEAD`
echo "當(dāng)前分支為:$current_branch"
# 將當(dāng)前工作區(qū)的內(nèi)容暫存起來
stash_result=`git stash save "tempstash$$"`
# 拉取 master 分支的代碼
git pull origin master
#獲取上一步操作的返回狀態(tài)碼
RET_CODE=$?
# 如果狀態(tài)碼不為 0 說明拉取 master 分支失敗尖昏,放棄合并 master 分支蹄皱,并退出狂秦。
if [ $RET_CODE -ne 0 ]; then
echo " 拉取 master 分支失敗 $RET_CODE"
exit $RET_CODE
fi
# 合并 master 分支代碼到當(dāng)前分支
git merge --no-edit master
# 將本地代碼推送到遠程分支
git push
# 判斷是否有暫存的代碼
if [ "$stash_result" != "No local changes to save" ]; then
# 恢復(fù)暫存的代碼
git stash pop stash@{0}
fi
# 正常退出
exit 0
配置
- 將上面的 shell 腳本保存到
merge_master.sh
文件中 - 在用戶根目錄的
.zshrc
文件中配置此腳本的使用別名。
# Automatic merging master branch to current branch
alias amm='zsh ~/xxx/xxx/merge_master.sh'
- 在終端執(zhí)行
source ~/.zshrc
讓amm
命令生效
使用
- 在終端中
cd
到 git 項目的根目錄 - 在終端中輸入命令
amm
逗余。就會自動合并 master 分支的代碼到當(dāng)前的分支
可以在腳本的頂部添加「切換到項目路徑」的指令茁肠。而省略在終端中
cd
到項目根目錄的步驟
cd /xxx/xxx/xxx/project/root/dir/
但是這樣操作之后,
amm
命令只針對這一個 git 倉庫生效了御蒲。