git alias 可简化冗长分支命令,如 gb 代替 git branch --all,需用 ! 开头支持参数传递,避免与内置命令冲突,别名存于 ~/.gitconfig 可跨机同步。

git branch 命令太长?alias 能直接缩成 gb
Git 默认的分支操作命令冗长,比如 git branch --all、git checkout -b,每次敲都费劲还容易拼错。用 git config --global alias 配置别名是最轻量、最通用的简化方式,不需要额外工具或脚本。
注意:别名是 Git 自身功能,所有平台(Linux/macOS/Windows Git Bash)都支持,但 Windows CMD 不支持带空格或管道的别名(建议用 Git Bash 或 WSL)。
常用分支相关别名示例:
-
git config --global alias.gb 'branch --all'→git gb -
git config --global alias.gco 'checkout'→git gco main -
git config --global alias.gcb 'checkout -b'→git gcb feat/login -
git config --global alias.gd 'branch --delete'→git gd old-branch
带参数的别名必须用引号包裹 shell 命令
如果别名需要动态传参(比如删远程分支),不能直接写 git push origin :branch,否则 Git 会把冒号后面当固定字符串。必须用 ! 开头触发 shell 解析,并用双引号包裹整个命令。
例如删远程分支的别名:
对比基线与当前 GitHub Actions 运行导出,在 CI 成本和交付周期激增前及时发现工作流或作业运行时性能退化。
git config --global alias.gdr '!f() { git push origin ":$1"; }; f'
执行 git gdr fix/typo 就等价于 git push origin ":fix/typo"。这里容易踩的坑有:
- 漏掉
!→ Git 把整个字符串当 Git 子命令,报错unknown command - 单引号包裹 → 变量
$1不会被 shell 展开,实际发出去的是字面量$1 - 没写函数包装
f() { ... }; f→ 多参数时无法正确传递(如git gdr feat/a feat/b会只处理第一个)
别名冲突时,Git 优先匹配内置命令而非 alias
别名不能覆盖 Git 内置命令名,比如你设了 git config --global alias.branch 'status',再执行 git branch 仍会运行原 git branch,不会变成 git status。Git 的解析顺序是:内置命令 > 别名 > 外部可执行文件。
所以起别名要避开这些词:add、commit、push、pull、branch、checkout、merge 等。推荐加前缀(如 gcb)或用动词缩写(如 br),避免后期行为意外。
跨机器同步别名?直接导出 .gitconfig
别名存在用户级配置文件里(通常是 ~/.gitconfig),复制这个文件就能迁移全部 alias。但要注意:
- 含
!的 shell 别名依赖系统 shell 环境,macOS 和 Linux 一般没问题,Windows CMD 下会失败 - 路径类别名(如
git config --global alias.st '!git status -s | grep "M\|A\|D"')在不同 Git 版本中输出格式可能微调,导致 grep 匹配失效 - 别名里不要硬编码用户名、仓库地址等敏感信息,否则配置文件一公开就泄露
真正复杂分支流程(比如「拉取最新 main → 新建特性分支 → 自动 rebase」)不适合塞进 alias,该上脚本或 pre-commit 钩子——alias 只负责把高频原子操作变短,不是工作流引擎。

















