Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在git日志中复制两个提交ID?_Git_Bash_Shell_Zsh_Oh My Zsh - Fatal编程技术网

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

如何在git日志中复制两个提交ID?,git,bash,shell,zsh,oh-my-zsh,Git,Bash,Shell,Zsh,Oh My Zsh,情况: 我正在使用zsh(哦,我的zsh)。当我使用Bash时,我能够滚动git日志,以便复制和粘贴提交id以进行其他操作 可能是因为这个存储库有太多的提交。现在,每当我在zsh中使用git log时,它似乎会跳转到另一个窗口,因此一次只能通过一个提交ID,并且除了q之外,我不能在该窗口内输入任何命令 我目前正在做的是将提交ID复制到textpad,并为以后的使用做准备 问题: 有没有办法让git日志和其他命令在同一窗口中显示所有历史记录?就像在Bash中一样。或者有没有办法一次复制两个提交ID

情况:

我正在使用zsh(哦,我的zsh)。当我使用Bash时,我能够滚动
git日志
,以便复制和粘贴提交id以进行其他操作

可能是因为这个存储库有太多的提交。现在,每当我在zsh中使用
git log
时,它似乎会跳转到另一个窗口,因此一次只能通过一个提交ID,并且除了
q
之外,我不能在该窗口内输入任何命令

我目前正在做的是将提交ID复制到textpad,并为以后的使用做准备

问题:

有没有办法让git日志和其他命令在同一窗口中显示所有历史记录?就像在Bash中一样。或者有没有办法一次复制两个提交ID



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

git --no-pager log
或者,用管道将其输送至cat-like:

git log | cat
您还可以使用-N,它将输出限制为仅最后N个条目:

(在本例中,最后2个条目)

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

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

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

git --no-pager log
或者,用管道将其输送至cat-like:

git log | cat
您还可以使用-N,它将输出限制为仅最后N个条目:

(在本例中,最后2个条目)

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

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

另一种解决方案适用于某些Shell,也适用于您的Shell(因为我也在使用oh my zsh):

  • 输入
    git日志
    pager并复制您的第一个提交ID
  • 复制它,离开寻呼机(q)
  • 开始键入git命令,粘贴ID,例如

    git diff f6a8d92c
    
  • 点击Ctrl+q以“挂起”终端上已键入但未发送的命令。它将消失,您可以运行不同的命令

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

  • 希望您能遵循这些步骤,如果没有,请告诉我失败的地方。如果挂起快捷方式不起作用,可能是因为shell在其他地方有它,或者不支持它。该功能显然被称为“推线”。

    这是一种不同的解决方案,适用于某些shell,也适用于您的shell(因为我也在使用oh my zsh):

  • 输入
    git日志
    pager并复制您的第一个提交ID
  • 复制它,离开寻呼机(q)
  • 开始键入git命令,粘贴ID,例如

    git diff f6a8d92c
    
  • 点击Ctrl+q以“挂起”终端上已键入但未发送的命令。它将消失,您可以运行不同的命令

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

  • 希望您能遵循这些步骤,如果没有,请告诉我失败的地方。如果挂起快捷方式不起作用,可能是因为shell在其他地方有它,或者不支持它。该功能显然被称为“推线”。

    git log | cat
    似乎丢失了所有git颜色输出
    git——没有寻呼机日志
    似乎可以正常工作。但是,当确实有大量提交时,如何找到所需的提交?谢谢这里是内置的grep命令,请检查更新版本的答案。谢谢。提醒我,我今天早上刚刚读到了
    grep
    。是的,它是
    -I
    标志,比如
    git--没有寻呼机日志-I--grep='My commit msg'
    来自
    曼吉特
    我找到了
    吉特日志(1)
    条目,当您检查
    mangit log
    时,您可以找到所有
    git log
    文档。
    git log | cat
    似乎丢失了所有git颜色输出
    git——没有寻呼机日志
    似乎可以正常工作。但是,当确实有大量提交时,如何找到所需的提交?谢谢这里是内置的grep命令,请检查更新版本的答案。谢谢。提醒我,我今天早上刚刚读到了
    grep
    。是的,它是
    -I
    标志,比如
    git--没有寻呼机日志-I--grep='My commit msg'
    来自
    曼吉特
    我找到了
    吉特日志(1)
    条目,当您检查
    man-git-log
    时,您可以找到所有
    git-log
    文档。
    Ctrl+q
    在我的终端上不起作用。我正在使用iTerm 2(Build 2.0.0.20141103)和zsh 5.0.5(x86_64-apple-darwin14.0)
    Ctrl+q
    在我的终端上不起作用。我使用的是iTerm 2(Build 2.0.0.20141103)和zsh 5.0.5(x86_64-apple-darwin14.0)