码迷,mamicode.com
首页 > 其他好文 > 详细

个性定制你的 Git 命令行提示符

时间:2016-01-22 03:12:16      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:git 命令行 颜色 shell 支线 master 提交 状态 高亮

1, 让BASH 命令行显示当前支线 以及 显示提交状态 并且使用不同颜色高亮区分


效果图:

技术分享

进入到git的工作目录后,显示当前所在支线名称

如果有已跟踪 未暂存的版本,那么使用红色* 提示

如果有已跟踪 未提交的版本,那么使用**** 提示

切换到其他支线后 提示符能打印当前支线名称

切换到非Git工作目录后,不影响其他操作。


定制原理:主要就是修改 PS1 变量(如果不知道PS1是什么,那么请先了解)。

修改bashrc  不管是全局的,还是当前用户的 

function get_git_branch_now  {
        git branch --no-color 2> /dev/null | awk ‘/*/{print"[>"$2"]"}‘
}
function get_git_status_now {
        git status 2> /dev/null | grep "Unmerged paths" > /dev/null  2>&1  && echo -e ‘\e[41;37m*\e[0m‘ &&  return 0            #合并冲突状态
        git status 2> /dev/null | grep "Changed but not updated" > /dev/null  2>&1  && echo -e ‘\e[31m*\e[0m‘ &&  return 0      #未暂存状态
        git status 2> /dev/null | grep "Changes to be committed" > /dev/null  2>&1  && echo -e ‘\e[33m*\e[0m‘ &&  return 0      #未提交状态
}


  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="\[\e[36m\][\u\[\e[0m\]\[\e[5m\]@\[\e[0m\]\h \[\e[32m\]\w\[\e[36m\]]\[\e[0m\]\[\e[34m\]\$(get_git_branch_now)\[\e[0m\]\$(get_git_status_now)\\$ "

这样就能显示图中的效果了,当然我这里的PS1 有点复杂,如果你能看懂最后两个变量引用,那么自然就理解了。



2,让Git的日常输出更友好,以及自定义log格式

git默认的输出是单一颜色的,不仅不够美观,也不容易阅读。实际上,git本身就支持用多种颜色来显示其输出的信息,只需在命令行中运行以下命令来修改git的设置,即可开启多颜色输出:

git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto

执行以上命令后,git的status, diff和branch等诸命令的输出就都是带有颜色的了。见下图示例。

技术分享

自定义log格式

完成上述步骤后,git log 命令的输出虽然有了点颜色,但还是显得枯燥(见下图)。

技术分享

不要紧,强大的git提供了自定义log格式的功能,尝试输入以下命令:

git log --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit

你将看到类似下图的输出:

技术分享

怎么样,不赖吧?不过,每次查看log都输出这么一长串的命令,实在是不太现实。咱们来通过git的命令别名来解决这个问题。输入以下命令:

git config --global alias.lg "log --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘"

上述命令将创建一个命令别名 lg,每次你使用命令 git lg 就相当于输入了刚才那一长串命令。现在,如果想看美观的多颜色输出,就使用 git lg,如果想看普通的log输出,就使用 git log,二者互不干扰。

如果你想让log输出某些特定的信息,可以自己调整 --pretty 参数的值,例如下面的命令将只显示commit的hash,提交时间,提交者姓名:

git log --pretty=format:‘%h %ar %an‘

format后面单引号中的内容替换为你想要的格式,即可实现自定义的log输出格式。这里的%h%ar等是一些git预定义的占位符,完整列表如下:

技术分享


Git 版本控制管理

本文出自 “Professor哥” 博客,转载请与作者联系!

个性定制你的 Git 命令行提示符

标签:git 命令行 颜色 shell 支线 master 提交 状态 高亮

原文地址:http://professor.blog.51cto.com/996189/1737500

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!