把 git-diff 的差異開在 Vim 分頁裡,也可以指定要看的版本,用 Vim 查閱 commit 歷史。
→ bootleq/vim-gitdiffall - GitHub
gitdiffall 指令
在 zsh 呼叫 gitdiffall
這個指令(目前是用 ruby 寫的,需要系統能跑 ruby)

參數跟 git diff
大致一樣。
查看某個 commit 改的東西
想知道 1836777 這個 commit 改了些什麼。

使用 gitdiffall @1836777
,會比較 1836777 和它的前一個 commit。
註:前一個 commit 不一定是 1836777^,而是從 git log 取出的前一項,這是為了提供更線性的用法。

就會開在 Vim 裡面。

這時可以下 :GitDiffInfo logs
(同 :GitDiffInfo
不加參數)看 git log。
但是在 diff 進行中,比較常用的可能是 :GitDiff
(同 :GitDiffInfo log
,注意參數是 log 不是 logs,後面會說明)。

看完請用 :GitDiffOff
來關閉 diff,確保幾件事:
1. 跳回編輯該檔案的目前版本。
2. 還原比較前的 diff 相關 option(Vim 內建的 :diffoff
會設回預設,不一定是原來的值)。
看完 1836777,想看下一個 commit,因為剛才有顯示 Shortcut for this commit is 7,所以只要 gitdiffall 6
就行了。

看現在改了什麼
以下圖來說,gitdiffall
會打開兩個紅色的檔案;
gitdiffall --cached
會打開綠色的。

以前寫的將複數 git diff 以 vim 分頁一次開啟,現在可以用 gitdiffall
取代了。
在 Vim 裡使用 GitDiff
在 Vim 裡面也可使用 :GitDiff
,會比較目前檔案和它的某個版本,這時就不需要 ruby 了。
參數跟 gitdiffall
類似,也稍微支援自動完成。

Diff 中可以用 :GitDiffInfo
看比較範圍內「全部 commit」的 log,
加上參數 :GitDiffInfo log
可以看「最相關的一個 commit」的 log(跟前述「GitDiff 時再呼叫 :GitDiff
」效果一樣)。

GitDiff 另外支援一個用法,就是 revision 的部分使用 +<n> 的型式,有別於 <n> 是找前一個 commit, +<n> 會找「包含目前檔案」的前一個 commit,可以避免 <n> 找不到變更的情況。
例如 :GitDiff +1
。
有 0 個意見
☂