2013-04-07 616 views
3

我通常喜歡在查看git diff時輸入我的git commit消息。實時git diff

我非常享受this little perl add-on to git產生的輸出,併產生輸出,看起來像這樣從git diff(這是git log -p的截圖,但你的想法:

enter image description here

因爲它是如何凸顯在改變的線條的相應部分,很容易看到改變了什麼,只是想分享它,因爲它看起來並不像很多人使用它,對我來說,它使用外部獨立diff工具或類似的東西,因爲這個工作在終端!一般來說,它比一般的vimdiff更像unix-pipe-friendly,儘管vimdiff也非常方便。

無論如何,show-and-tell只與這裏的真實問題相關,也就是說,我可以設置一個終端窗口,在這裏我已經顯示了git diff,但要讓它具有動態性,以便當我保存一個文件時,它可以爲我刷新git diff?基本上這個想法是讓一個終端窗口作爲我即將提交的確切更改的實時顯示,這樣我就可以直接從我的文本編輯器切換到輸入git commit命令,同時讀取整個變更集,並且通過SSH也可以在Linux機器上實現此工作流程。

這將是一個非常棒的工作流程,我認爲一點點的cmdline fu可以讓我在那裏,但我不確定從哪裏開始。看起來OS X和Linux似乎需要單獨的實現。我發現fswatch可能適用於我,顯然這與Linux上的inotify-watch類似。我不需要把它設置在我的OS X開發機器上,但就像我之前提到的那樣,通過SSH實現這個功能將是史詩級的。

有沒有其他快速和骯髒的UNIXy方法來解決這個問題?

+0

在帶有'vc-dir'的Emacs中,可以在diff窗口中按'g'來更新其內容。 – choroba 2013-04-07 22:10:15

+0

這很好,但我更像是一個vim用戶;另外,要求輸入更新並不令人滿意。我想要的東西,要麼輪詢(壞,但直接)或被通知文件系統更新 – 2013-04-07 22:11:22

回答

1

使用普通的內置git commit -v,它只是顯示在提交消息下提交的更改的全部差異? (而Vim用這個庫存設置突出顯示了這個差異。)

+0

啊,好的提示。我仍然不會後悔建立這個,因爲它是實時的,我甚至在我想到承諾之前就得到它。事實上,vim非常充分地強調了這一點。 – 2013-04-08 12:54:24

3

你想要類似「watch git diff」的東西。 「watch」命令反覆運行一個命令並顯示輸出的第一頁。

您需要超過輸出的第一頁,並且您不想在輸出更新時將其移動到輸出的頂部 - 您想要不斷地在diff中查看相同的偏移量,直到您滾動爲止。

我還沒有嘗試過,但您可能可以使用「屏幕」或「tmux」來提供大型虛擬屏幕。 (請參見https://serverfault.com/questions/50772/is-there-a-paging-version-of-watch。)