适配工作习惯的git alias命令

发布于:

#场景

公司的工作流是:test 是长期分支,每个版本持续使用,推送到 test 自动触发测试环境部署;feature_xx 分支一般只留在本地,不推远程
feature 单独推送远程、被 master 合并,一般只在修线上问题时发生,随后 test 会再合并一次 master 同步修复
日常在不同的功能分支上开发,每次想看效果都要手动走一遍:
bash
git checkout test git pull git merge feature-xxx git push git checkout feature-xxx
来回切分支很繁琐,merge 还会产生一条合并提交
于是封装了两个 alias:常规验证用 git test,在当前分支一条命令完成检查工作区 → 拉最新 origin/test → rebase → 推送,全程不切分支

#git test

bash
git config --global alias.test '!f() { if ! git diff --quiet || ! git diff --cached --quiet; then echo "❌ 工作区有未提交修改,请先 commit 或 stash" exit 1 fi echo "⬇️ Fetch origin/test..." git fetch origin test || exit 1 echo "🔄 Rebase onto origin/test..." git rebase origin/test || { echo "❌ Rebase 冲突。解决后执行 git rebase --continue,或 git rebase --abort" exit 1 } echo "🚀 Push HEAD -> origin/test..." git push origin HEAD:test }; f'
配置好后,任意分支上提交完代码,执行:
bash
git test

#注意

修线上问题的分支慎跑 git test:rebase 到 origin/test 后,分支历史里会混入 test 上还没发版的功能,master 直接合并它,未发版的代码就跟着上线了

#alias 管理

bash
# 查看已配置的所有 alias git config --get-regexp '^alias\.' # 删除这个 alias git config --global --unset alias.test # 或者直接编辑 ~/.gitconfig 的 [alias] 段