Git 进阶:color/diff

Gentoo 默认的 git 真的很朴素,默认配置实在是太简单了。

譬如 diff,譬如 color,

我们还是先将 git 的颜色部分配置好吧。

[color]
    branch = auto
    diff = auto
    status = auto
    grep = auto
    ui = auto
    interactive = auto
[color "branch"]
    current = yellow reverse
    local = yellow
    remote = green
[color "diff"]
    meta = yellow
    frag = magenta
    old = red
    new = green
[color "status"]
    added = yellow
    changed = green
    untracked = cyan

现在操作 git status/diff/branch 时是否眼前一亮?再也不用在白茫茫的一片中寻找信息了。

下面讲git diff的语法

git diff [options] [<commit>] [--] [<path>...]
git diff [options] --cached [<commit>] [--] [<path>...]
git diff [options] <commit> <commit> [--] [<path>...]
git diff [options] [--no-index] [--] <path> <path>

$ git diff                                                比较工作目录树与缓存区之间的区别
$ git diff head                                           比较工作目录树(包括暂存的和未暂存的修改)与版本库最后一个版本的差别
$ git diff [filename]                                     比较具体的文件
$ git diff --stat                                         统计用,显示每个修改的文件的统计
$ git diff [commit] [filename]                            比较当前文件与之前某commit之间的区别
$ git diff [commit]:[old-name] [new-name]                 比较重命名的文件
$ git diff [branch]..[other-branch]                       比较两个branch之间的commit
$ git diff [branch]...[other-branch]                      Compare the tip of other-branch and the closest ancestor (fork point) on [branch]
$ git diff [branch]:[filename] [other-branch]:filename    比较两个分支之间的具体文件的区别
$ git diff --no-index [filename] [filename]               Compare any two files, even if they’re not in a repo :O

譬如如果想提取两次 commit 之间的 diff 的话就很简单

$ git diff oldcommit newcommit > patch

记住,使用 git diff 比较本地修改之前,一定要先 git add . 将修改加到缓冲区。

git diff 的具体用法,请

$ git diff --help

参考资料:http://www.kernel.org/pub/software/scm/git/docs/git-diff.html