此脚本适合在 MacOS 下工作
# 获取当前分支的名称,在控制台输出,方便知道当前是为哪个分支合并代码
current_branch=`git rev-parse --abbrev-ref HEAD`
echo "当前分支为:$current_branch"
# 将当前工作区的内容暂存起来
stash_result=`git stash save "tempstash$$"`
# 拉取 master 分支的代码
git pull origin master
#获取上一步操作的返回状态码
RET_CODE=$?
# 如果状态码不为 0 说明拉取 master 分支失败,放弃合并 master 分支,并退出。
if [ $RET_CODE -ne 0 ]; then
echo " 拉取 master 分支失败 $RET_CODE"
exit $RET_CODE
fi
# 合并 master 分支代码到当前分支
git merge --no-edit master
# 将本地代码推送到远程分支
git push
# 判断是否有暂存的代码
if [ "$stash_result" != "No local changes to save" ]; then
# 恢复暂存的代码
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'
- 在终端执行
source ~/.zshrc
让amm
命令生效
使用
- 在终端中
cd
到 git 项目的根目录 - 在终端中输入命令
amm
。就会自动合并 master 分支的代码到当前的分支
可以在脚本的顶部添加「切换到项目路径」的指令。而省略在终端中
cd
到项目根目录的步骤
cd /xxx/xxx/xxx/project/root/dir/
但是这样操作之后,
amm
命令只针对这一个 git 仓库生效了。