2013-04-07 40 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。)