强化你的git

2016-09-27 · 9 min read

git 是目前最流行的版本管理工具之一,日常开发中时时刻刻都在于 git 打交道,git 原本已经足够强大,但是在命令行模式下,并不美观,这次介绍几个我积累的配置,强化你的 git。

pull 模式使用 rebase#

在你执行git pull 的时候,如果远程仓库已经有人提交了新的代码,那么 git 默认会进行 merge,结果就是:

配置:

git config --global pull.rebase true

这样会将你本地的 commit 在远程仓库的基础上 rebase,保持 log 为单一线,看上去清晰许多。但是这里有个问题,设置完 rebase 之后,执行 pull 就看不到本次 pull 涉及到哪些文件了,这个在后面的 log 中处理。

美化 diff#

当你要暂存\&commit 之前,看看你修改了哪些内容是个好习惯,执行git diff 命令,默认的输出格式比较难懂,我们可以美化一下,在~/.gitconfig 中添加如下 alias:

[alias]
  d = "!f() { [ -z \"$GIT_PREFIX\" ] || cd \"$GIT_PREFIX\" && git diff --color \"$@\" | diff-so-fancy  | less --tabs=4 -    RFX; }; f"

然后执行git d  替代git diff ,结果会清晰许多:

美化 log#

查看提交日志是 git 中非常频繁的操作,但是默认的输出结果不太直观,继续添加 alias:

[alias]
  lg1 = log --graph --abbrev-commit --decorate --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)' --all
  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)' --all
  lg = !"git lg1"

这样就可以使用git lg1git lg2 两个命令了,显示结果就是第一图中的样子,清晰了许多。另外在可以使用--name-status 参数,显示修改的文件,解决 pull 改为 rebase 方式后,看不到具体文件信息的问题:

git-extras#

这个就不多说了,可以安装 tj 的git-extras,新增了很多命令可以用。

目前大概就这么多,后面有新的东西再更新。