Git - 使用命令和P4Merge进行diff
P4Merge
P4Merge是Git的一个第三发Diff和Merge工具(可视化冲突解决工具).
下载地址: https://www.perforce.com/downloads/visual-merge-tool
安装的时候只需要勾选p4merge即可:

然后需要把p4merge的路径添加到环境变量PATH里面.
这样操作后, 就可以通过命令行启动p4merge了:

配置p4merge作为Git的diff tool:
git config --global diff.tool p4merge
git config --global difftool.p4merge.path "C:\Program Files\Perforce\p4merge.exe"
因为每次使用diff tool的时候, git会弹出确认框, 我们最好把这个确认框从全局范围内默认不启用:
git config --global difftool.prompt false
配置p4merge作为git的merge tool:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "C:\Program Files\Perforce\p4merge.exe"
git config --global mergetool.prompt false
最后检查一下全局配置:
git config --global --list

OK.
下面准备一个项目, 现在的项目状态是:

添加一个README.md, 然后add并commit.
然后修改README.md 然后add
然后再修改README.md:

git status告诉我这个文件被修改了, 但是没有告诉我哪里被修改了.
为了知道更多的细节, 这里就需要使用 git diff命令了.
不加任何参数的情况下, 该命令
比较的是working directory里面, 被stage的变化 vs 没被stage的变化:

如果变化太多了显示不下, 想要退出的话, 就按q就行.
因为我配置了git difftool, 所以也可以使用 git difftool这个命令:

这就会弹出p4merge这个可视化工具, 可以清楚的看到变化.
左边的是stage的, 右边的是没有stage的.
比较working directory和最后一次commit:
git diff HEAD.

下面使用可视化的difftool: git difftool HEAD.

比较Staging 区和最后一次commit.
git diff --staged HEAD.

使用可视化工具: git difftool --staged HEAD:

只比较一个文件/路径.
再修改项目的另一个文件, 然后查看状态:

如果执行git diff的话, 那么两个文件都会被比较:

只想比较一个文件/路径的话就需要加参数:
git diff -- README.md:

也可以使用可视化工具:
git difftool -- README.md:

比较两个commit.
先查看历史: git log --oneline:

git diff xxx yyy
其中xxx和yyy都表示commit的 id, 最后一次commit可以用HEAD表示.

下面这个命令比较的是HEAD 和 HEAD的上一次:
git diff HEAD HEAD^.(这个命令在windows上可能有点问题, 请使用git bash):

使用可视化工具:
git difftool HEAD HEAD^:

HEAD^表示上一次commit, HEAD^^就表示上两次的commit, 以此类推, 也可以使用HEAD~2的形式, 它和HEAD^^是一样的. 也可以连着使用 HEAD^^~3就像当于HEAD^^^^^.
本地 vs 远程.
git diff master origin/master. (origin是远程github的引用名而已, 这个可以改.) 这就是比较本地和远程的master分支.

同样也可以使用可视化工具: git difftool master origin/master:

最后git push origin master.
本文就简单介绍了这些: p4merge, difftool, mergetool, git diff, git difftool, 各种情况的git diff.
Git - 使用命令和P4Merge进行diff的更多相关文章
- [Ubuntu] Git可视化比较工具 P4Merge 的安装/配置及使用
1 下载 下载地址. 链接到上面的下载页后,先找到左边导航的 Clients ,如下图 1 所示. 接着找到 P4Merge: Visual Merge Tool , 如下图 2 所示. 最后,选择好 ...
- git常用命令
开始的时候 git config --global user.name "Your Name" git config --global user.email "email ...
- Git 常用命令详解
Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...
- Git 常用命令大全
Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v 添加 ...
- Git常用命令总结
Git常用命令总结 git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone ...
- git 常用命令及解析 由浅入深
笔者用的是windows系统,不过并没有什么影响. Git 分布式版本控制系统. 为了让初学git的人明白git是干什么的,有什么意义 笔者觉得先来介绍git作为版本控制器是怎么运作的会让大家对后边 ...
- git常见命令
总结自己的Git常用命令 使用git也有一段时间了,把自己常用的命令用自己的描述记录起来,方便自己备忘也方便其他人参考. 目录: 最基本的命令: git clone 拷贝并跟踪远程的master分支. ...
- GIT常用命令备忘
Git配置 git config --global user.name "storm" git config --global user.email "stormzhan ...
- Git 常用命令2
Git 常用命令 Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ gi ...
随机推荐
- how to design a search component in react
how to design a search component in react react 如何使用 React 设计并实现一个搜索组件 实时刷新 节流防抖 扩展性,封装,高内聚,低耦合 响应式 ...
- CSS3 & Flex Layout All In One
CSS3 & Flex Layout All In One demos https://www.cnblogs.com/xgqfrms/p/10769302.html .flex-contai ...
- css skeleton & web app skeleton
css skeleton & web app skeleton skeleton https://www.cnblogs.com/xgqfrms/p/10437258.html https:/ ...
- javascript & global event & custom event
javascript & global event & custom event new CustomEvent object let event = new CustomEvent( ...
- git stash & git stash pop
git stash & git stash pop $ git checkout feature/select-seat-system $ git checkout feature/app-d ...
- Unity3d 拖拽脚本报错Can't add the script component "" because the script class cannot be found
解决办法: ①报错原因:文件名与文件内容中的类名不相符. ②关闭360.鲁大师等防护软件,重新安装系统.
- Java线程池实现原理及其在美团业务中的实践
本文转载自Java线程池实现原理及其在美团业务中的实践 导语 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供 ...
- Debian 基本使用进阶
系统安装好了我们,迫不及待的想要在Linux系统中肆意翱翔.如果是刚刚接触Linux的系统的话,可能一时间还无法适应Linux的系统环境.对于使用Debian来做服务器的选择,最好的练习方式的就是使用 ...
- SpringBoot配置本地文件映射路径
1.前言 在springboot的项目中,如果需要通过项目方式访问本地磁盘的文件,不仅可以使用nginx代理的方式,还可以使用springboot配置的方式进行访问. 实例原因说明:由于上传的图片是要 ...
- redis.conf 配置说明
redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,R ...