Git 历史相关和 git config 高级进阶

前一段时间分享了一篇《更好的 git log》简要介绍怎么美化 git log 命令,其中提到了 alias命令,今天再继续谈谈 git相关, 看看如何通过配置自己的 git config 让自己的 git 用起来更顺手。

git log 进阶

在一行显示 git log

git log --pretty =oneline在一行显示 git log.

git log --oneline --stat ,显示每个文件的变化行数,其中后面跟的--start参数是用来统计哪些文件被改动,有多少行被改动。

git log --oneline --graph,则可以图形化地显示 branch 的变化(方便查看 merge 变化)。

查看不同时间段的 git log

git log --until=1.minute.ago // 一分钟之前的所有 log
git log --since=1.day.ago //一天之内的log
git log --since=1.hour.ago //一个小时之内的 log
git log --since=`.month.ago --until=2.weeks.ago //一个月之前到半个月之前的log
git log --since ==2013-08.01 --until=2013-09-07 //某个时间段的 log

如果你想更加个性化地设置 git log 输出的不同参数的颜色,可以使用如下命令

git log --pretty=format:"%h %ad- %s [%an]"

其中的参数对应的是

%ad  author data  // 日期
%an author name // 作者名
%cn committer name //提交者姓名
%h SHA hash // hash值
%s subject //commit的描述
%d ref names //对应的 branch 分支名

更多的选项可以使用git help log 来看看,如我在《更好的 git log》中提到的,你可以通过alias 来创建一个简洁的git lg 命令来定制自己喜欢的输出方案。

git diff 进阶

git diff 是用来比较版本之间的差异变化 balbalbala 之类的,哪里修改了,哪里添加了 balbalbala

git diff HEAD //与上次 commit 之间的差别(爸爸)
git diff HEAD^ //与上上次(爷爷)
git diff HEAD^^ //与上上上次(曾祖父)
git diff HEAD~5 //与前面第5次commit(好吧…祖先吧)
git diff HEAD^..HEAD //中间是两个点比较(爸爸)和(爷爷)的差别
git diff f5fdjsalfjdskaf..4fdklsajfdksaf //比较 两个不同 hash 值记录之间的不同
git diff master bird //比较 branch 之间的不同
git diff --since=1.week.ago --until=1.minute.ago //还可以根据时间来比较哦

git blame

如果你想要看看某一个文件的相关历史记录,可以使用git blame 命令。
git blame index.html --data short

git config进阶

config 就是配置的意思,git config 字如其意,就是 git 的配置文件,git config 文件有三层。
第一层config是在系统层etc/gitconfig, 可以通过使用 git config --system来进行配置,此层gitcofnig 配置针对系统所有用户的分支都有效。

第二层是~/.gitconfig,针对某个用户有效,针对此层设置使用的是git config --global命令。

第三层是项目文件夹中的配置文件,比如说我有一个 project1的文件夹,project1/.git/config就是在这个 repo 中使用的 gitconfig 配置。直接使用git config 就能进行配置。

基础配置

git config --help,使用这个命令可以列出 git config 的帮助列表。
而使用git config --list,则可以显示你目前的 git config 配置。

用户信息配置

git config --global user.name "will luo" //
git config --global user.emal "i@luolei.org" //

颜色设置

git config --global color.ui true //

git 在终端显示会有颜色

color.*

如果你想针对不同的 git 命令输出不同的配色,你可以使用 color.[command-type] 命令。

color.branch
color.diff
color.interactive
color.status

以上参数都能设置true,false,always

git config --global color.diff.meta "blue black bold"

这段代码的意思就是git diff 输出的「git 改变的信息(diff)」 以粗体、蓝色前景、黑色背景的形式展现。
能设置的颜色值包括
normal, black, red, green, yellow, blue, magenta, cyan, white.,字体属性则有bold, dim, ul, blink, reverse.

ALIASES

git config --global alias.mylog "log --pretty=format:'%h %ad- %s [%an]' --graph "

git config --global --add alias.lol "log --graph --decorate --pretty=oneline --abbrev-commit --all"

这样就自定义git mylog,和git lol两个命令,至于是什么样的效果,大家就根据代码的意思领悟和学习一下吧。

对于我们日常常用的 git 命令,我们可以通过

git config --global alias.st status //status 缩写成 st
git config --global alias.co checkout //checkout 缩写成 co
git config --global alias.br branch //branch 缩写成 br
git config --global alias.ci commit //commit 缩写成 ci

大家可以根据自己的喜好来缩写,当然,到时候别忘了备份自己的 config 文件(可参考我的博文dotfiles新手教程)。

原文地址罗磊的独立博客:「Git log diff config高级进阶」

Git log diff config高级进阶的更多相关文章

  1. 问题: 查看某个文件的修改记录| git log 高级用法

    参考文章: git查看某个文件的修改历史 5.3 Git log 高级用法 基本步骤 git log --pretty=oneline [文件名] git show [节点] git log 两周高级 ...

  2. git log的常见用法

    git log 使用git log命令,什么参数都没有的话,会以下面的格式输出所有的日志(我当前的git仓库只有三个提交).如果日志特别多的话,在git bash中,按向下键来查看更多,按q键退出查看 ...

  3. 4. git log的常见用法

    git log ======见https://blog.csdn.net/daguanjia11/article/details/73823617 +++++++++++++++++++++++ 使用 ...

  4. Git log、diff、config 进阶

    前一段时间分享了一篇<更好的 git log>简要介绍怎么美化 git log 命令,其中提到了 alias命令,今天再继续谈谈 git相关, 看看如何通过配置自己的 git config ...

  5. Git log高级用法

    格式化Log输出 首先,这篇文章会展示几种git log格式化输出的例子.大多数例子只是通过标记向git log请求或多或少的信息. 如果你不喜欢默认的git log格式,你可以用git config ...

  6. git log 高级用法

    转自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.3-Git-log%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95 内 ...

  7. [译]git log进阶

    格式化log输出 oneline --oneline标记将每个commit压缩成一行. 默认情况下显示一个commit ID和commit描述的第一行. 输出如下: 0e25143 Merge bra ...

  8. git 查看对比的方法log diff

    git shortlog 默认情况下,git shortlog 把输出按作者名字排序,但你可以传入 -n 选项来按每个作者提交数量排序. 1.有冲突时可以用 git status查看 2.通过git ...

  9. 2-具体学习Github---init add commit log diff

    1.安装: 首先找到git的官网,内部有下载链接. 也可以用下面的,我的是win7的64位系统: 可以在此处下载:Git-2.13.0-64-bit.exe链接:http://pan.baidu.co ...

随机推荐

  1. 【BZOJ4036】按位或(Min-Max容斥,FWT)

    [BZOJ4036]按位或(Min-Max容斥,FWT) 题面 BZOJ 洛谷 题解 很明显直接套用\(min-max\)容斥. 设\(E(max\{S\})\)表示\(S\)中最晚出现元素出现时间的 ...

  2. BZOJ3688 折线统计 【dp + BIT】

    题目链接 BZOJ3688 题解 将点排序 设\(f[i][j][0|1]\)表示以第\(i\)点结尾,有\(j\)段,最后一段上升或者下降的方案数 以上升为例 \[f[i][j][0] = \sum ...

  3. debian包管理

    常用的包管理工具有:apt.apt-get.apt-cache.apt-file.aptitude.dpkg等.功能有重复的,挑顺手的即可. 1.apt # apt --help list - lis ...

  4. 前端学习 -- Css -- 伪元素

    :first-letter 表示第一个字符 :first-line 表示文字的第一行 :before 选中元素的最前边,一般该伪类都会结合content一起使用,通过content可以向指定位置添加内 ...

  5. 解题:USACO14MAR Counting Friends

    题面 枚举每个数字是否能被删去,然后就是如何判定图是否存在.应该从按“度数”从大到小排序,从最大的顺次向其他点连边(先连“度数”小的可能会把一些可以和大“度数”点连接的点用掉).但是这个排序每连一次都 ...

  6. 论C语言中二级指针和二维数组之间的区别

    刚开始学习C语言的时候,觉得一个数组可以定义一个一级指针去访问,想当然的就觉得可以定义一个二级指针去访问二维数组.很显然这是错误的. 我们来看看C语言的数组在内存中的存储方式. 实际上C语言中的数组, ...

  7. winscp以命令行方式同步服务器数据到PC机磁盘上

    目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运 ...

  8. 博世传感器调试笔记(三)加速度及地磁传感器BMC156

    一.    器件简介:1.    BMC 156是一款整合三轴地磁传感器与三轴(12bit)加速度传感器于一体的传感器,以BMC 150 电子罗盘模块为基础, 并与Bosch Sensortec 2x ...

  9. noVNC连接CentOS,以Web方式交付VNC远程连接

    什么是noVNC? noVNC 是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算.虚拟机控 ...

  10. 洛谷P2766 最长递增子序列问题

    https://www.luogu.org/problemnew/show/P2766 注:题目描述有误,本题求的是最长不下降子序列 方案无限多时输出 n 网络流求方案数,长见识了 第一问: DP 同 ...