如何在 git 日志中复制两个提交 ID?

How to copy two commit ID inside git log?

情况:

我正在使用 zsh (oh-my-zsh)。当我使用 Bash 时,我可以滚动 git log 以便我可以复制和粘贴其他操作的提交 ID。

可能是因为这个仓库有太多的commit。现在每当我在 zsh 中使用 git log 时,它似乎跳转到另一个 window 所以我一次只能通过一个提交 ID,我不能在里面输入任何命令window,除了 q.

我目前正在做的是将提交 ID 复制到文本板,以备后用。

问题:

有什么方法可以让 git 日志在与其他命令相同的 window 中显示所有历史记录?就像在 Bash 中一样。或者有没有办法可以一次复制两个提交 ID?


要使 git log 命令非交互式使用:

git --no-pager log

或者,将其通过管道传递给猫:

git log | cat

您也可以使用 -N,它将输出限制为仅最后 N 个条目:

(在此示例中为最后 2 个条目)

git --no-pager log -2

要搜索给定文本的提交日志,您可以使用 git 的内置 grep 命令,例如:

git --no-pager log --grep='My commit msg'

一种在某些 shell 中有效的不同解决方案,并且应该在您的中有效(因为我也在使用 oh-my-zsh):

  1. 输入 git log 寻呼机并复制您的第一个 Commit ID
  2. 复制,留下传呼机(q)
  3. 开始输入您的 git 命令,粘贴 ID,例如

    git diff f6a8d92c
    
  4. Ctrl+q 到 'suspend' 输入但未发送的命令终点站。它会消失,您可以 运行 不同的命令。

  5. 运行git log再次进入日志,复制另一个ID,留下q.
  6. 现在,先前挂起的命令应该再次出现在您的提示符下(它总是出现在下一个完成的命令之后,即 git log)。如果需要,您可以再次暂停它,方法是按 Ctrl+q.
  7. 粘贴第二个 ID 以创建完整命令。

希望大家能按照步骤操作,如果不行请告诉我哪里出错了。如果挂起快捷方式不起作用,可能是因为您的 shell 在其他地方有它或不支持它。该功能显然称为 "push-line".