【问题标题】:Real-time git diff实时 git diff
【发布时间】:2013-03-29 21:41:59
【问题描述】:

我通常喜欢在查看 git diff 时输入我的 git 提交消息。

我非常喜欢this little perl add-on to git 生成的输出,并且从git diff 生成的输出看起来像这样(这是git log -p 的屏幕截图,但你明白了:

由于它突出显示了已更改的行的相应部分,因此很容易看出发生了什么变化。只是想分享它,因为它看起来不像很多人使用它,对我来说,它比使用外部单独的差异工具或类似的东西要好,因为它在终端上工作!总的来说,它也比vimdiff 更适合unix-pipe,尽管vimdiff 在紧要关头也很方便。

无论如何,show-and-tell 仅与此处的实际问题相关,即,我是否可以设置一个终端窗口来显示 git diff,但让它是动态的,这样当我保存了一个文件,它可以为我刷新git diff?基本上,这个想法是让一个终端窗口实时显示我即将提交的确切更改,这样我可以直接从我的文本编辑器切换到输入git commit 命令,同时阅读整个集合的变化,并且在 Linux 机器上也可以通过 SSH 实现此工作流程。

这将是一个非常棒的工作流程,我认为一点 cmdline fu 可以让我到达那里,但我不确定从哪里开始。似乎 OS X 和 Linux 需要单独的实现。我发现 fswatch 可能对我有用,显然这类似于 Linux 上的 inotify-watch。我不应该只在我的 OS X 开发机器上设置它,但就像我之前提到的,通过 SSH 拥有这种功能将是史诗般的。

对于这个问题,还有其他快速而简单的 UNIXy 方法吗?

【问题讨论】:

  • 在带有vc-dir 的Emacs 中,您可以在差异窗口中按g 来更新其内容。
  • 这很好,但我更像是一个 vim 用户;另外,要求输入更新并不令人满意。我想要一些可以轮询(不好!但很简单)或收到文件系统更新通知的东西

标签: linux macos git unix fswatch


【解决方案1】:

使用简单的内置 git commit -v 有什么问题,它只显示提交消息下要提交的更改的完整差异? (而且 Vim 可以通过库存设置突出显示这个差异。)

【讨论】:

  • 啊,好提示。我仍然不后悔构建它,因为它是实时的,我什至在考虑提交之前就得到了它。确实 vim 非常充分地突出了这些东西。
【解决方案2】:

你想要“watch git diff”之类的东西。 “watch”命令重复运行一个命令并显示输出的第一页。

您需要的不仅仅是输出的第一页,而且您不希望在输出更新时移动到输出的顶部 - 您希望在 diff 中不断查看相同的偏移量,直到滚动为止。

我还没有尝试过,但您也许可以使用“screen”或“tmux”来提供一个大的虚拟屏幕。 (见https://serverfault.com/questions/50772/is-there-a-paging-version-of-watch。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 2015-11-28
    • 2011-12-02
    • 2012-03-28
    • 2011-01-04
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多