我的Git配置文件

Daniel Dai 3 min read

我的Git配置文件,里面定义了一些常用的alias,方便使用。

[user]
        name = Daniel Dai
        email = daniel@danieldai.com
[alias]
        s = status
        br = branch
        co = checkout
        cm = commit
        oldest-ancestor = !bash -c 'diff --old-line-format= --new-line-format= <(git rev-list --first-parent \"${1:-master}\") <(git rev-list --first-parent \"${2:-HEAD}\") | head -1' -
        ssv = "log --no-merges --pretty=format:\"\\\"%h\\\";%an;%ai;%ct;\\\"%s\\\"\""
        lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'
        lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
        lg3 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD / %cD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
        lg1a = !"git lg1 --all"
        lg2a = !"git lg2 --all"
        lg3a = !"git lg3 --all"
        lg = !"git lg1"
        fap = fetch --all --prune
        fpush = push --force-with-lease
[core]
        editor = vim
	excludesfile = ~/.gitignore
	autocrlf = input
[push]
        default = simple

配置说明

用户信息

  • name: 设置Git用户名
  • email: 设置Git邮箱地址

常用别名 (Aliases)

  • s: git status 的简写
  • br: git branch 的简写
  • co: git checkout 的简写
  • cm: git commit 的简写

高级别名

  • oldest-ancestor: 查找两个分支的最近公共祖先
  • ssv: 生成CSV格式的提交日志
  • lg1/lg2/lg3: 不同风格的图形化日志显示
  • lg1a/lg2a/lg3a: 显示所有分支的图形化日志
  • lg: 默认使用lg1风格
  • fap: 获取所有远程分支并清理已删除的分支
  • fpush: 安全的强制推送

核心设置

  • editor: 使用vim作为默认编辑器
  • excludesfile: 全局忽略文件路径
  • autocrlf: 处理换行符转换
  • push.default: 推送模式设置为simple

这些配置大大提高了Git使用的效率,特别是图形化的日志显示和简化的命令别名。

Comments