git 是一个非常棒的源代码管理工具,它的使用已经完全整合到开发的工作流当中;同时,git 还是一个 review/OTAP/deployment 工具。

当在 CLI 中使用 git 时,有时必须输入很多比较长的命令来完成一些事情。尽管大部分 git 命令是很简单的,但是也有一些非常复杂并难以输入的命令。而开发人员是比较懒的,并会尽可能的少输入命令。

因为上述情况很符合我,所以对于我经常使用的 git 命令,我会使用其别名来代替,并会改进命令的返回信息。在这篇文章中,我会介绍一些简单但非常有用的 git 别名。

简化常用的 git 命令的别名

一些 git 别名非常简单,用这些别名替换原始的 git 命令也意味着减少你的输入,这有一个别名列表:

co  = checkout       # Checkout a branch
cob = checkout -b    # Checkout a new not yet existing branch
f   = fetch -p       # Fetch from a repository and prune any remote-tracking references that no longer exist on the remote.
c   = commit         # Commit you changes
p   = push           # Push you changes to a remote
ba  = branch -a      # List both remote-tracking branches and local branches.
bd  = branch -d      # Delete a branch only if it has been merged
bD  = branch -D      # Force delete a branch
dc  = diff --cached  # Display the staged changes

查看 git 的提交状态

查看当前工作目录的提交状态是大多数开发者的一项日常工作。我们会分段查看自己对哪些文件做了改变,并判断我们是否改变了原本不打算改变的文件。

将命令简化,并让其显示更多的信息:

st = status -sb

例如:

在 patches 中呈现 git 改变

我喜欢在添加改变之前进行 review,或许你也这么做。git diff 是能实现这个需求的一个不错的工具。但如果你只想添加你改变的那部分,或者每次只想 review 一小部分,你可以将你改变的那部分分多次提交。

在这种情况下,git add -p 能解决你的需求:

a = add -p

例如:

更有用的 git 日志

git 日志能帮助我们查看在工作目录下对代码做了哪些改变,日志不仅记录了代码的提交历史,而且会记录分支的合并情况。当我们 输入规范的提交信息 时,git 日志就成为一个查看代码变更和为什么变更的重要工具。

改善 git 日志的输出能快速定位这些改变:

plog = log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'

例如:

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

例如:

tlog = log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative

例如:

按照合并数量给贡献者排序

当你对某个 project 有问题并想找一个人说明时,怎么找到这个 project 的第一贡献者就非常有必要了。

rank = shortlog -sn --no-merges

例如:

删除所有已合并的分支

在提交 PR 之前,我们需要创建一个本地分支来提交代码,时间久了之后,你就会发现有很多已经合并到 master 上的分支,一个一个删除这些分支是比较麻烦的事。

当这些已经合并的分支的数量很大时,用一个简单的别名来删除这些分时是很方便的。这个别名会删除所有已经合并到你当前所在分支的分支:

bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d"

例如:

[alias]
    # Shortening aliases
    co = checkout
    cob = checkout -b
    f = fetch -p
    c = commit
    p = push
    ba = branch -a
    bd = branch -d
    bD = branch -D
    dc = diff --cached

    # Feature improving aliases
    st = status -sb
    a = add -p

    # Complex aliases
    plog = log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'
    tlog = log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    rank = shortlog -sn --no-merges
    bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d"

原文:16 awesome git aliases that you will love

转载:淡忘~浅思 » 16个不错的git别名

16个不错的git别名的更多相关文章

  1. 5.Git基础-撤销操作、标签的使用、Git别名

    1.撤销操作 1.1 修改上一次的提交(commit)--  git commit --amend 有时候我们在提交完成之后才发现有几个文件没有提交,或者发现提交信息填写错了,这时候可以使用 git ...

  2. Git Add,Git别名等

    一,Git  Add 1.  git add -A   保存所有的修改 2.  git add .     保存新的添加和修改,但是不包括删除 3.  git add -u   保存修改和删除,但是不 ...

  3. git别名;git配置使用shell函数;git别名使用shell函数;git获取当前分支;git alias

    获取当前分支 git symbolic-ref -q --short HEAD 2. 在git别名里使用shell函数,$1获取第一个参数的值,$2……$n依次类推,根据自己习惯需要定制 3. 提交r ...

  4. Git 别名(分布式版本控制系统)

    1.Git 别名 Git 并不会在你输入部分命令时自动推断出你想要的命令.如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名.这里有一些例子你 ...

  5. Ubuntu 16.04 LTS上git提交出现警告Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts. 的解决方法

    问题: Ubuntu 16.04 LTS执行 git pull时总会出现以下警告: Warning: Permanently added 'github.com,52.74.223.119' (RSA ...

  6. 向Git证明自己的身份,Git别名配置

    一.向Git证明自己的身份 在安装完Git后,第一步就是向Git说明自己的身份,通过如下两个命令证明: git config --global user.name "myusername&q ...

  7. 13.git别名

    虽然别名不是很重要,但是你大概应该知道如何使用它们. Git 并不会在你输入部分命令时自动推断出你想要的命令. 如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每 ...

  8. 如何在Ubuntu 16.04安装的Git【转】

    转自:https://www.howtoing.com/how-to-install-git-on-ubuntu-16-04/ 介绍 现代软件开发中不可或缺的工具是某种版本控制系统. 版本控制系统允许 ...

  9. Git别名和配置文件

    目录 备注: 配置别名 配置文件 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文. 配置别名 如果,如果这么神器的Git版本控制系统,可以简 ...

随机推荐

  1. HttpClient4.0

    ****************************HttpClient4.0用法***************************** 1.初始化HttpParams,设置组件参数 //Ht ...

  2. js原生封装自定义滚动条

    /* * @Author: dothin前端 * @Date: 2015-11-21 00:12:15 * @Last Modified by: dothin前端 * @Last Modified t ...

  3. 直接拿来用的15个jQuery代码片段

    1.预加载图片 1 2 3 4 5 6 7 8 9 10 11 12 (function($) {   var cache = [];   // Arguments are image paths r ...

  4. 认识<img>标签,为网页插入图片

    在网页的制作中为使网页炫丽美观,肯定是缺少不了图片,可以使用<img>标签来插入图片. 语法: <img src="图片地址" alt="下载失败时的替 ...

  5. js单条新闻向上滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  6. 重新开始学习javase_对象的摧毁

    一.概述(转:@深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版) ) 经过半个世纪的发展,内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去了 ...

  7. php中session的运行机制

    在PHP中session默认是以文件的形式存储于服务器的 而客户端和服务端则是通过session_id来完成握手的,默认情况下PHP会将session_id存储于cookie中,用户每次请求时该ses ...

  8. 初涉JavaScript模式 (11) : 模块模式

    引子 这篇算是对第9篇中内容的发散和补充,当时我只是把模块模式中的一些内容简单的归为函数篇中去,在北川的提醒下,我才发觉这是非常不严谨的,于是我把这些内容拎出来,这就是这篇的由来. 什么是模块模式 在 ...

  9. $().change事件

    change([[data],fn]) 当元素的value值发生改变时发生change事件 适用于: 文本域 text textarea和select元素 text textarea 元素失去焦点时发 ...

  10. C语言基础学习基本数据类型-浮点型

    float和double 加了小数点的数都是浮点数.C语言有两种书写浮点数的方式,一种是使用常用的标准小数点表示法,如下: 0.00056 8.0 1.23 第二种表示浮点值叫做E表示法.下面是一些例 ...