一直以來我在會用到 git 的機器上都會裝 tig ,但也只是用到閱覽 commit 的用途,直到最近看到有 .tigrc 這種東西,再看了一下別人的設定用法,這才知道我根本不會用 tig,也才發現原來 tig 可以用來補足 git 那麼差的使用體驗。
由於 tig 的使用說明雖然詳盡但並不是很容易理解,這裡還是稍微提一下基本的使用方式。
在使用 git 的專案底下輸入 tig 指令後,預設會看到是閱覽 commit log 的畫面,也就是所謂的 main view,可以 j/k 上下移動, enter 查看 commit 的詳細 diff 變更,然後用 q 關閉 diff 畫面。
在 main view 底下對選中的 commit 按 t 可以進到 tree view,直接查看 commit 當時的 repo 檔案內容,省去 git checkout 的麻煩。
在其它的 view 可以用大寫 S 切換到 status view,然後就能用 u 來把檔案加入或移出這次的 commit,或是對檔案按 enter 查看 diff 變更,此時可以用 @ 往下選 chunk,再按 u 來只加入選中的 chunk,或是用 j/k 上下移動,按數字 1 來只加入單行的修改,最後按 q 跳出 diff 再按下大寫 C 就能 git commit 了。
前面講的 status view,也可以用 tig status 直接進入,另外也推薦用 tig blame 來代替 git blame。
還有 tig 指令後面接 branch 名稱可以直接查看分支,接著在分支 commit 上按大寫 C 可以 cherry-pick 回目前的 branch,而 tig 後面接檔名的話可以直接查看跟這個檔案有關的 commit,更多的基本功能介紹可以看 git? tig! 這篇文章。
接下來要講的是用家目錄底下的 .tigrc 自訂的進階功能。雖然 tigrc 的使用說明裡面有不少內容,但我這邊只大略提一下 BIND 的功能。
# User-defined external command to amend the last commit
bind status + !git commit --amend
以上面這段為例,指的是在 status view 底下,按下 + 會執行 git commit –amend,而 ! 表示會顯示執行結果。
bind main = !git commit --fixup=%(commit)
而在 main view 裡面想對選中的 commit 執行指令則可以像上面那樣代入變數。
結論就是,在 command line 用 git 又沒搭配 tig 的人實在太可惜啦!
3 replies on “tig ── git 的命令列好夥伴”
thanks your sharing
Thanks.
Thanks