文章最初发表于szhshp的第三边境研究所
转载请注明
你真的不需要一个Git Merge Tool?
Git的命令行来查看diff有些时候也是很鸡肋的。
Screenshot from 2017-07-01 23-04-17.pngWindows习惯使用TortoiseGit进行各种Merge操作,到了Linux也应该准备一个。
安装
一行代码解决所有问题
sudo apt-get install meld
使用
正常情况下输入meld
会开启一个empty view
当然如果后面加一个repo
路径的话就可以查看对应的diff了
Step1: 设置Git默认difftool为meld
设置meld为默认difftool
git config --global diff.tool meld
另外如果之后想换其他工具只要改一下meld就行
之后在运行:
git difftool
就会对当前repo进行diff查看,当然meld可以同时进行merge操作
Screenshot from 2017-07-01 23-04-39.pngStep2: 取消difftool的验证弹框/diff without prompt
查看所有
difftool
参数的命令man git-difftool OPTIONS -y, --no-prompt Do not prompt before launching a diff tool.
简单易懂,后面加个-y
参数即可
git difftool -y
Step3: 使用Meld对整个repo进行Diff/Merge
但是依然很麻烦因为对应多个文件meld会依次弹出来,于是我又搜一下如何一次性diff整个文件夹
答案也很简单
Starting with git v1.7.11, you can use git difftool --dir-diff to perform a directory diff.
The answer that follows applies to git installations older than v1.7.11.
于是最终diff命令变成了:
git difftool -y --dir
Step Extra: 简化命令
这命令太麻烦了居然还有三个参数完全记不住怎么办
ZSH: (:з」∠)呵呵
打开ZSH
的配置文件:
gedit ~/.zshrc
然后在alias下面加一行:
# Example aliases
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias jkl='jekyll s'
alias subl='LD_PRELOAD=./libsublime-imfix.so subl'
alias gdiff="git difftool -y --dir"
当然这里的别名可以随便换,修改后保存重开Terminal就可以使用gdiff对当前repo进行diff和merge了
Screenshot from 2017-07-01 23-07-49.png参考文献
- https://stackoverflow.com/questions/4955752/set-git-diff-to-a-default-value
- https://stackoverflow.com/questions/34119866/setting-up-and-using-meld-as-your-git-difftool-and-mergetool
- https://stackoverflow.com/questions/7897517/why-does-git-difftool-not-open-the-tool-directly
- https://stackoverflow.com/questions/1220309/git-difftool-open-all-diff-files-immediately-not-in-serial
网友评论