设为首页 收藏本站
查看: 841|回复: 0

[经验分享] 个性定制你的 Git 命令行提示符

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-25 08:44:10 | 显示全部楼层 |阅读模式
1, 让BASH 命令行显示当前支线 以及 显示提交状态 并且使用不同颜色高亮区分


效果图:
QQ截图20160125084400.png
wKioL1ahmkejvFdKAAAcP5BaiiM095.jpg
进入到git的工作目录后,显示当前所在支线名称
如果有已跟踪 未暂存的版本,那么使用红色* 提示
如果有已跟踪 未提交的版本,那么使用**** 提示
切换到其他支线后 提示符能打印当前支线名称
切换到非Git工作目录后,不影响其他操作。

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

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

1
2
3
4
5
6
7
8
9
10
11
function get_git_branch_now  {
        git branch --no-color 2> /dev/null | awk '/\*/{printf "\033[34m[>"$2"]\033[0m" }'
}
function get_git_status_now {
        git status 2> /dev/null | grep -q "Unmerged paths"  && echo -e '\033[41;37m*\033[0m' &&  return 0            #合并冲突状态
        git status 2> /dev/null | grep -qE "Changes not staged for commit|Changed but not updated" && echo -e '\033[31m*\033[0m' &&  return 0      #未暂存状态
        git status 2> /dev/null | grep -q "Changes to be committed" && echo -e '\033[33m*\033[0m' &&  return 0      #未提交状态
}


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



这样就能显示图中的效果了,当然我这里的PS1 有点复杂,如果你能看懂最后两个变量引用,那么自然就理解了。
2016.01.23更新,修复了在os x下运行不正常的问题。


2,让Git的日常输出更友好,以及自定义log格式
git默认的输出是单一颜色的,不仅不够美观,也不容易阅读。实际上,git本身就支持用多种颜色来显示其输出的信息,只需在命令行中运行以下命令来修改git的设置,即可开启多颜色输出:
1
2
3
4
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等诸命令的输出就都是带有颜色的了。见下图示例。
wKioL1ahB6DhwvEoAAAhIkdlXlI514.jpg
自定义log格式
完成上述步骤后,git log 命令的输出虽然有了点颜色,但还是显得枯燥(见下图)。
wKiom1ahB6ridxvAAABFxDEwheU771.jpg
不要紧,强大的git提供了自定义log格式的功能,尝试输入以下命令:
1
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit



你将看到类似下图的输出:
wKioL1ahCC3T140pAABp2zElHF4005.jpg
怎么样,不赖吧?不过,每次查看log都输出这么一长串的命令,实在是不太现实。咱们来通过git的命令别名来解决这个问题。输入以下命令:
1
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,提交时间,提交者姓名:
1
git log --pretty=format:'%h %ar %an'



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

wKioL1ahCObyJkwUAAFdjHS_0yQ047.jpg

Git 版本控制管理


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-169022-1-1.html 上篇帖子: linux 下安装git 下篇帖子: 企业级GitLab仓库环境构建 个性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表