命令行下Git调用IDEA的diff功能
命令行下git diff, 有人欢喜有人厌, 本文以IDEA diff为例, 介绍如何更换Git的diff工具.
IDEA diff
IDEA作为一个图形化工具, 其实也提供了极少一部分命令行接口, 将IDEA安装目录下的bin目录添加到PATH环境变量中, 我们就可以在命令行中调用IDEA的命令了.
文章图片
其中, IDEA的diff子命令, 需要两个参数: left
和right
. 一般情况下, left
为旧文件, right
为新文件.
Git外部diff机制(Git external diff)
Git自带了一个命令行的diff工具, 当然, 我们也可以自定义diff工具. 自定义的diff工具, 在git中叫做 Git external diff, 本文暂且称其为 Git外部diff工具.
如果我们设置了外部diff工具的话, Git将会调用我们所设置的外部diff工具, 并传递7个参数:
path
文件的路径old_file
旧文件的路径old_hex
旧文件的SHA1old_mode
旧文件的mode(文件类型+文件权限)new_file
新文件的路径new_hex
新文件的SHA1new_mode
新文件的mode
- 通过Git config命令设置:
git config --global diff.external xxx
- 通过环境变量
GIT_EXTERNAL_DIFF
设置:export GIT_EXTERNAL_DIFF=xxx
old_file
和new_file
传递给IDEA diff.#!/bin/bashpath="$1"
old_file="$2"
old_hex="$3"
old_mode="$4"
new_file="$5"
new_hex="$6"
new_mode="$7"idea diff "$old_file" "$new_file"
我们将脚本保存到任意位置, 脚本命名为任意名字皆可, 例如命名为ideadiff.sh, 保存到/home/wbourne/目录下, 即可通过
git config --global diff.external /home/wbourne/ideadiff.sh
命令将其设置为外部diff工具, 再次在命令行中使用git diff
时, 就会打开IDEA的diff界面了.在Windows中使用Git bash需注意盘符的问题, 可通过
pwd
命令查看映射后的路径, 如脚本保存在用户家目录下, 则命令应为: git config --global diff.external /c/Users/wbourne/ideadiff.sh
不只是IDEA diff, 只要是提供了命令行接口的diff工具, 都可将其设置为外部diff工具.
至此, 本文就基本结束了, 受限于篇幅, 本文只介绍了最简陋的diff脚本, 某些情况下是报错的, 例如: 新增文件, 删除文件. 感兴趣的读者, 可继续自行完善此脚本!
禁用外部diff工具 最后说一下如何禁用外部diff工具, 通过
--no-ext-diff
选项即可禁用外部diff工具, 即git diff --no-ext-diff
.参考
- Git Documentation
- Git diff Documentation
推荐阅读
- 大二下软件工程第一周开课博客
- 使用分支——处理Git merge 冲突
- Jenkins+Docker+Gitee+SpringBoot自动化部署
- 命令行与C++
- java高版本下各种JNDI|java高版本下各种JNDI Bypass方法复现
- git|基于IDEA的Git撤销本地修改和前进后退选择提交版本
- 数据可视化|数字化转型大趋势下,如何通过数据分析助力
- 项目管理|Oracle项目管理系统之设计任务下达及成果交付
- github|内卷把同事逼成了“扫地僧”,把 Github 上所有面试题都整理了一遍~ 足足 24W 字
- python|python api测试框架 github_GitHub - tilics/jiekou-python3: 接口自动化测试框架——python版,支持HTTP,dubbo协议接口...