Vim Diff
1
2
3
4
5
6
7
8
9
| # 命令行启动
vim -d file1 file2
nvim -d file1 file2
# 水平分割
vim -d -o file1 file2
# 比较多个文件
vim -d file1 file2 file3
|
快捷键:
]c - 跳到下一个差异[c - 跳到上一个差异do / :diffget - 从另一个窗口获取修改dp / :diffput - 将修改放到另一个窗口:diffupdate - 更新差异:diffoff - 关闭 diff 模式
Git
1
2
3
| git config --global diff.tool vimdiff
git config --global difftool.prompt false
git difftool
|
SVN
创建脚本 svnvimdiff:
1
2
| #!/bin/bash
vimdiff "$6" "$7"
|
配置:
1
2
3
4
5
6
| # ~/.subversion/config
[helpers]
diff-cmd = /path/to/svnvimdiff
# 或临时使用
svn diff --diff-cmd vimdiff
|
diff-so-fancy
安装
1
2
3
4
5
| # macOS
brew install diff-so-fancy
# Ubuntu/Debian
sudo apt install diff-so-fancy
|
Git
1
2
3
| git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
git config --global interactive.diffFilter "diff-so-fancy --patch"
git diff
|
SVN
1
2
3
4
5
6
| # ~/.subversion/config
[helpers]
diff-cmd = diff-so-fancy
# 或临时使用
svn diff --diff-cmd diff-so-fancy
|
git-delta
安装
1
2
| # macOS
brew install git-delta
|
Git
1
2
3
4
5
6
| git config --global core.pager delta
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.side-by-side true
git config --global delta.line-numbers true
git diff
|
SVN
创建脚本 svndelta:
1
2
| #!/bin/bash
diff -u "$6" "$7" | delta
|
配置:
1
2
3
| # ~/.subversion/config
[helpers]
diff-cmd = /path/to/svndelta
|
icdiff
安装
1
2
3
4
5
| # macOS
brew install icdiff
# pip
pip install icdiff
|
Git
1
2
| git config --global icdiff.options '--highlight --line-numbers'
git difftool --extcmd icdiff
|
SVN
1
| svn diff --diff-cmd icdiff
|
colordiff
安装
1
2
3
4
5
| # Ubuntu/Debian
sudo apt install colordiff
# macOS
brew install colordiff
|
Git
1
2
| git config --global alias.dic "diff --color"
git dic
|
SVN
1
2
3
4
5
6
| # ~/.subversion/config
[helpers]
diff-cmd = colordiff
# 或临时使用
svn diff --diff-cmd colordiff
|
ydiff
安装
Git
1
2
| ydiff -s # 代替 git diff
ydiff -ls # 代替 git log
|
SVN
difftastic
基于语法树的 diff 工具,语法感知。
安装
1
2
3
4
5
| # macOS
brew install difftastic
# 其他系统
# 从 GitHub releases 下载
|
Git
1
2
3
| git config --global core.pager difftastic
git config --global diff.external difftastic
git diff
|
SVN
创建脚本 svndifft:
1
2
| #!/bin/bash
difft "$6" "$7"
|
配置:
1
2
3
| # ~/.subversion/config
[helpers]
diff-cmd = /path/to/svndifft
|
Kaleidoscope
macOS 专业的 diff 和 merge 工具。
安装
从官网下载:https://kaleidoscope.app/
Git
在 Kaleidoscope 菜单中选择 “Integration…”,选择设为默认工具。
或手动配置:
1
2
3
4
| git config --global difftool.Kaleidoscope.cmd "ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
git config --global diff.tool Kaleidoscope
git difftool
|
SVN
1
2
3
4
5
6
| # ~/.subversion/config
[helpers]
diff-cmd = /Applications/Kaleidoscope.app/Contents/Utilities/ksdiff
# macOS 路径
diff-cmd = /Applications/Kaleidoscope.app/Contents/MacOS/ksdiff
|
Beyond Compare
跨平台的 diff 和 merge 工具。
安装
从官网下载:https://www.scootersoftware.com/
Git
1
2
3
4
5
6
7
8
9
10
| # macOS
git config --global diff.tool bcomp
git config --global difftool.bcomp.cmd "/usr/local/bin/bcomp \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
# Windows
git config --global diff.tool bc
git config --global difftool.bc.path "C:/Program Files/Beyond Compare 5/bcomp.exe"
git difftool
|
SVN
创建脚本 bcompare_svn:
1
2
3
| #!/bin/bash
/usr/local/bin/bcompare "$6" "$7" &
exit 0
|
配置:
1
2
3
| # ~/.subversion/config
[helpers]
diff-cmd = /path/to/bcompare_svn
|
Meld
开源的跨平台 diff 工具。
安装
1
2
3
4
5
| # macOS
brew install meld
# Ubuntu/Debian
sudo apt install meld
|
Git
1
2
3
| git config --global diff.tool meld
git config --global difftool.meld.cmd "meld \"$LOCAL\" \"$REMOTE\""
git difftool
|
SVN
1
2
3
4
5
6
| # ~/.subversion/config
[helpers]
diff-cmd = meld
# 或临时使用
svn diff --diff-cmd meld
|
VS Code
安装
下载:https://code.visualstudio.com/
Git
安装扩展 “Meld Diff” 或其他 diff 扩展。
SVN
安装扩展后使用扩展的 SVN 集成。
Others
diffs.com
专门来渲染 diffs 的界面,语法高亮基于 Shiki,而且可定制性很强,我觉得非常漂亮,如果大家有类似需求,比如渲染一些 diffs 界面就可以用这个。
diff-highlight
Git 自带的 diff 高亮工具。
1
| git config --global core.pager "diff-highlight | less"
|