2012年6月24日 星期日

git 小技巧:改善 diff/log 介面

Kaleidoscope 是一套我個人偏愛的 Mac diff tool,雖然功能遠不如 Araxis Merge 強大,不支援 Three-Way Merge、直接編輯、也不支援目錄比較,但畫面蠻漂亮的,價錢也相對便宜。



我同時使用 SVN 及 git。


對我來講,SVN 是一套比 Time Machine 可靠的版本控管/同步/備份的檔案系統,我習慣把文件、設定檔或一些雜七雜八比較重要的資料都丟進 SVN 中保存SVN 在 Mac 上有套不錯的 GUI 介面叫 Versions,它直接選擇 Kaleidoscope 做為預設 diff tool。


git 在 Windows 上的支援比較差,也沒找到比較好的 Mac GUI 介面。所以個人認為 git 不像 SVN 那麼適合用來管理文件,但 git 對於寫程式真的很方便,一旦跨越學習門檻後,很容易就會愛上 git。


以下是我目前的 .gitconfig 設定 (參考了這篇文章),標藍色的部份設定了 git difftool 開啟 Kaleidoscope,標綠色的部份可以讓輸出結果漂亮一點。

[core]
editor = emacs
[color]
ui = true    # 很多指令的輸出會有顏色標示
[alias]
co = checkout
ci = commit -m 
ca = commit -a -m 
br = branch
st = status
d = diff -w --color-words
dt = difftool
unstage = reset HEAD --
l = log --pretty=oneline --graph
[diff]
tool = ksdiff  # set as default for difftool
[difftool "ksdiff"]
cmd = /Applications/Kaleidoscope.app/Contents/MacOS/ksdiff \"$LOCAL\" \"$REMOTE\"
[difftool]
prompt = false


另外可以在命令列加上一個 bash alias,如在 ~/.profile 中加上
alias ksdiff=/Applications/Kaleidoscope.app/Contents/MacOS/ksdiff
就可以直接在命令列中開啟 Kaleidoscope 比較兩個檔案
$ ksdiff <file1> <file2>


此外如果你嫌 git log 的介面還不夠方便,除了 Xcode 內建一套類似 Time Machine 很炫的 git log 介面外,也可以安裝一套 GitX 軟體提供檢視 log 的 GUI 介面。
如果你已經裝過 MacPorts ,輸入一行指令就可安裝 GitX
$ sudo port install GitX


終端機在 git 管理的路徑下輸入 gitx 就可直接開啟 GitX 


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

ps. Xcode 4 的 git 整合有一些 bug,當用 git 做 branch checkout 之類較大的變動時,最好先關閉 Xcode 的 workspace/project,否則 Xcode 會 crash。

1 則留言:

  1. Xcode 4.4.1 已經改善了 diff 介面,大部分情況下可以直接在 Xcode 中做 git diff 的動作了...

    回覆刪除