Skip to content

Git Shell 别名

Git shell 别名为常用 Git 命令创建快捷方式。属于 Dotfiles 配置的一部分,由 Chezmoi 自动加载。

这些别名定义在 git.aliases.shsigning.aliases.sh 中,安装后在任何 Bash 或 Zsh 会话中可用。

核心

别名命令描述
ggitgit 的简写
gtpgit rev-parse --show-toplevel输出仓库的顶层目录
grpagit rev-parse --abbrev-ref HEAD输出当前分支名称
gconflgit config --list列出所有 Git 配置设置
gconfrgit config --local --get remote.origin.url输出远程 origin URL
gconfdiffgit config alias.dcolor "diff --color-words"配置按词着色的差异别名

工作区

别名命令描述
gagit add暂存文件
gaagit add --all暂存所有更改(已跟踪和未跟踪)
gadgit add .暂存当前目录中的所有内容
gaugit add --update暂存修改和删除(不包括新文件)
gclgit clone克隆仓库
gingit init初始化新的 Git 仓库
gcogit checkout切换分支或恢复工作树文件
gcbgit checkout -b创建并切换到新分支
gdisgit checkout --丢弃工作目录中的更改
grsgit restore恢复工作树文件
gmvgit mv移动或重命名文件
grmgit rm从工作树和索引中删除文件
grmcgit rm --cached从索引中移除(保留在磁盘上)
gstgit status显示工作树状态
gstsgit status --short简短格式状态
gstsbgit status --short --branch带分支信息的简短状态
gstagit stash save暂存当前更改
gstpgit stash pop应用并移除最新暂存
gstdgit stash drop删除最新暂存条目
gcloutgit clean -df && git checkout -- .丢弃所有更改和未跟踪文件

提交

别名命令描述
gcgit commit -a提交所有已跟踪的更改
gcagit commit --amend修改上次提交
gcallgit add -A && git commit -av暂存所有内容并详细提交
gcamgit commit --amend --message使用新消息修改提交
gcanegit commit --amend --no-edit修改提交但不更改消息
gcmgit commit --message使用内联消息提交

差异和历史

别名命令描述
gdgit diff显示未暂存的更改
gdchgit diff --name-status显示已更改文件的名称和状态
gdhgit diff HEAD显示自上次提交以来的所有更改
gdstagedgit diff --staged显示已暂存的更改
gdcachedgit diff --cached显示索引和 HEAD 之间的更改
gdstatgit diff --stat --ignore-space-change -r生成忽略空白的差异统计
glgit log --since="last month" --oneline上个月的单行日志
glggit log --graph --all --oneline --decorate所有分支的图形日志
glgggit log --oneline --graph --full-history --all --color --decorate带颜色的完整历史图形日志
glcgit log --oneline --reverse按时间顺序的单行日志
gldgit log --since=1-day-ago最近 24 小时的日志
gldcgit log -1 --date-order --format=%cI最新提交的 ISO 8601 日期
gldlgit log --date=local使用本地时区的日志
glfgit log ORIG_HEAD.. --stat --no-mergesfetch 后的新提交(不含合并)
gll(装饰图形格式)带作者和 GPG 状态的详细图形日志

分支

别名命令描述
gbgit branch列出本地分支
gbdgit branch -d删除已合并的分支
gblgit branch -l按模式列出分支
gbrgit branch -r列出远程分支
gbrdgit branch -d -r删除远程跟踪分支
gbrsbgit show-branch显示分支及其提交
gswbgit switch切换分支(现代方式)
gcodegit checkout main && git branch --merged | xargs git branch --delete删除所有已合并到 main 的分支
gcomgit checkout main && git fetch origin --prune && git reset --hard origin/main将本地 main 重置为远程

远程和推送/拉取

别名命令描述
gfgit fetch从远程获取
gpgit pull从远程拉取
gphgit push推送到远程
gpogit push origin推送到 origin
gpbgit push --set-upstream origin $(git branch --show-current)推送并为当前分支设置 upstream
gpollgit push origin --all将所有分支推送到 origin
gpullgit pull从远程拉取
gpushgit push推送到远程
grgit remote管理远程仓库
gragit remote add添加新远程
grallgit remote | xargs -L1 git push --all将所有分支推送到所有远程
graogit remote add origin添加 origin 远程
grvgit remote -v显示远程 URL

撤销和重置

别名命令描述
grevgit revert撤销一个提交
grevncgit revert --no-commit撤销但不自动提交
grbgit rebase变基当前分支
grbkgit reset --soft HEAD^撤销上次提交,保持更改已暂存
gresclgit reset --hard HEAD~1 && git clean -fd硬重置并清理未跟踪文件
greshgit reset --hard HEAD~1硬重置到上一个提交
grespgit reset --hard && git clean -ffdx将所有内容重置为初始状态
gressgit reset --soft HEAD~1软重置(保持更改已暂存)

子模块

别名命令描述
gsmgit submodule管理子模块
gsmigit submodule init初始化子模块
gsmagit submodule add添加子模块
gsmsgit submodule sync将子模块 URL 与 .gitmodules 同步
gsmugit submodule update更新子模块
gsmuigit submodule update --init更新并初始化子模块
gsmuirgit submodule update --init --recursive更新、初始化并递归子模块

工具

别名命令描述
gggit grep搜索仓库内容
gbsgit bisect二分查找引入 bug 的提交
undopushgit push -f origin HEAD^:master强制撤销上次推送到 master

签名和安全

别名命令描述
enable-signing(交互式向导)配置 GPG 或 SSH 提交签名
verify-signaturesgit log --show-signature -n 10验证最近 10 次提交的签名
check-signinggit config --list | grep "gpg|signing"检查当前签名配置