diff git 指定时间_Git diff 代码比较的高级技巧

Git diff 代码比较的高级技巧

Git是使用branch来管理不同的功能点开发的,那么我们怎样能比较不同branch的不同呢?

使用 git diff  branch1 branch2 , 就可以了, 但这个方法不够直观, 因为只能显示不同点的上下几行,不方便理解。

比较好的做法是使用图形化比较工具比较,例如meld,  使用以下的命令就可以了

git difftool -t meld -y   branch1 branch2

这样可以使用meld一个一个文件的比较,每次关闭meld就会自动显示下一个不同的文件。

比较不同的commit,使用以下命令就可以了

git difftool -t meld -y  commitId1  commitId2

比较工作区和上次提交的差异,这个最常用了

git difftool -t meld -y  HEAD

你可以使用git  config命令设置meld为默认的比较工具,并且把prompt设为false,这样以后就可以使用git difftool了。

也可以直接修改 .gitconfig

gedit ~/.gitconfig 在最后加入

[diff]

tool = meld

[difftool]

prompt = false

当然了,如果你不喜欢meld,也可以使用其他的比较工具,git difftool 支持以下的比较工具:

kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,

ecmerge, diffuse, opendiff, p4merge and araxis

--------------------------------------------------------------------------------

比较提交 - Git Diff

你可以用 git

diff 来比较项目中任意两个版本的差异。

$ git diff master..test

上面这条命令只显示两个分支间的差异,如果你想找出‘master’,‘test’的共有 父分支和'test'分支之间的差异,你用3个‘.'来取代前面的两个'.' 。

$ git diff master...test

git diff 是一个难以置信的有用的工具,可以找出你项目上任意两点间

的改动,或是用来查看别人提交进来的新分支。

哪些内容会被提交(commit)

你通常用git

diff来找你当前工作目录和上次提交与本地索引间的差异。

$ git diff

上面的命令会显示在当前的工作目录里的,没有 staged(添加到索引中),且在下次提交时 不会被提交的修改。

如果你要看在下次提交时要提交的内容(staged,添加到索引中),你可以运行:

$ git diff --cached

上面的命令会显示你当前的索引和上次提交间的差异;这些内容在不带"-a"参数运行 "git commit"命令时就会被提交。

$ git diff HEAD

上面这条命令会显示你工作目录与上次提交时之间的所有差别,这条命令所显示的 内容都会在执行"git commit -a"命令时被提交。

更多的比较选项

如果你要查看当前的工作目录与另外一个分支的差别,你可以用下面的命令执行:

$ git diff test

这会显示你当前工作目录与另外一个叫'test'分支的差别。你也以加上路径限定符,来只 比较某一个文件或目录。

$ git diff HEAD -- ./lib

上面这条命令会显示你当前工作目录下的lib目录与上次提交之间的差别(或者更准确的 说是在当前分支)。

如果不是查看每个文件的详细差别,而是统计一下有哪些文件被改动,有多少行被改 动,就可以使用‘--stat' 参数。

$>git diff --stat

layout/book_index_template.html | 8 ++-

text/05_Installing_Git/0_Source.markdown | 14 ++++++

text/05_Installing_Git/1_Linux.markdown | 17 +++++++

text/05_Installing_Git/2_Mac_104.markdown | 11 +++++

text/05_Installing_Git/3_Mac_105.markdown | 8 ++++

text/05_Installing_Git/4_Windows.markdown | 7 +++

.../1_Getting_a_Git_Repo.markdown | 7 +++-

.../0_ Comparing_Commits_Git_Diff.markdown | 45 +++++++++++++++++++-

.../0_ Hosting_Git_gitweb_repoorcz_github.markdown | 4 +-

9 files changed, 115 insertions(+), 6 deletions(-)

有时这样全局性的查看哪些文件被修改,能让你更轻轻一点。

基于git diff进行的eslint代码检测

缘起 在项目中, 通常都会使用代码检测工具来规范团队的代码风格, 比如eslint.随着代码的不断增加, eslint进行代码检测的时间也越来越久.每次检测的时候, 需要检测的文件和实际检测的文件极度 ...

git diff 以及解决代码冲突

我是使用一台电脑测试, 然后在本地电脑创建了两个工作目录.专门用来模拟两个人提交代码.假设a.b两个人.只使用一个master分支做测试, 没有建立其他的分支. 主要就是为了研究冲突的解决方式.感觉g ...

Git diff 统计代码更改数量

1. git diff HEAD~2 获取最近两次提交的具体不同 包括增删的文件以及行数以及每行具体的改动 2.  git diff --stat 获取文件更改的个数 增加行数 删除行数 3. git ...

git diff提示filemode发生改变(old mode 100644、new mode 10075)

今天clone代码,git status显示修改了大量文件,git diff提示filemode变化,如下: diff --git a/Android.mk b/Android.mkold mode ...

git diff的用法

在git提交环节,存在三大部分:working tree(工作区), index file(暂存区:stage), commit(分支:master) working tree:就是你所工作在的目录, ...

Git diff 常见用法

Git diff 用于比较两次修改的差异 1.1 比较工作区与暂存区 git diff  比较的是单个仓库的工作区与暂存区的差别,repo diff是对git diff的封装,用来分别显示各个项目 ...

使用git了解代码编写过程

在看教程时,有的老师会将代码放到github,如果不想跟着视频一步一步来,那就直接clone整个代码,但整个看着又有点蒙,那就使用版本切换的功能了. 首先 git clone 下载下来 git log ...

git 客户端 代码下载与提交

(1)git clone 服务器用户名@服务器IP:~/Git目录/.git 功能:下载服务器端Git仓库中的文件或目录到本地当前目录. (2)对Git目录中的文件进行修改. (3)git statu ...

1. Git 克隆代码

1. Git 克隆代码 git clone git://github.com/facebook/hiphop-php.git 2. Git更新分支 查看服务器上的所有分支 [huzg@slave3 h ...

随机推荐

Unity的HTC VIVE SDK研究(手柄按键功能的研究,比较详细)

http://blog.csdn.net/ystistheking/article/details/51553237 想交流的朋友我们可以微博互粉,我的微博黑石铸造厂厂长 ,缺粉丝啊 .....求粉求 ...

三级菜单---zhufeng

无标题文 ...

grep命令实战

显示/etc/rc.d/rc.sysinit中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行 grep "^#[[:space:]]\+.\+" /etc/rc ...

libcurl get post http

一.              概念 1.         为什么要使用libcurl 1)        作为http的客户端,可以直接用socket连接服务器,然后对到的数据进行http解析,但要 ...

MySQL float 与decimal 各中的区别。

想一个问题: 1/3+1/3+1/3=1.0 0.3+0.3+0.3 =0.9 想一想在小数的世界里要什么表示1/3呢!它的办法就是取一个与1/3十分接近的小数来代替:如上面例子中的0.3来代替1/3 ...

Dom4j修改xml文档引入

前面介绍了如何解析xnl文档的内容,这里对修改xml展开讨论. 一.首先看一下,写出内容到xml文档的主要代码: XMLWriter writer = new XMLWriter(OutputStre ...

使用java实现快速排序(挖坑填数法和指针交换法)

快速排序:通过一趟排序,将数据分为两部分,其中一部分中的所有数据比另外一部分的所有数据要小,然后按照此方法,分别对这两部分进行排序,达到最终的排序结果. 每趟排序选取基准元素,比该基准元素大的数据放在 ...

【BZOJ1185】[HNOI2007]最小矩形覆盖(凸包,旋转卡壳)

[BZOJ1185][HNOI2007]最小矩形覆盖(凸包,旋转卡壳) 题面 BZOJ 洛谷 题解 最小的矩形一定存在一条边在凸包上,那么枚举这条边,我们还差三个点,即距离当前边的最远点,以及做这条边 ...

[c/c++] programming之路(9)、运算优先级

一.运算优先级 二.条件运算符(表达式1?表达式2:表达式3) 当式1正确时,取式2的值:否则,取式3的值 三.格式字符 #include #include

linux下查看和修改文件时间

一.查看文件时间及相关命令 1.stat查看文件时间 [root@web10 ~]# stat install.log File: "install.log" Size: 3338 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值