Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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日志--从关注到尊重--跳过?_Git - Fatal编程技术网

如何获取git日志--从关注到尊重--跳过?

如何获取git日志--从关注到尊重--跳过?,git,Git,当使用git log--skip=1时,当我使用--follow时,它似乎会抑制--skip=1 为什么会这样?这是设计还是一个bug 有没有办法防止它这样做 目前还不清楚这是“bug”还是“feature” --follow禁止--skip不是真的。这个问题更为根本,与git log的工作方式有关 与任何遍历提交图的Git命令一样,Git log必须遍历图,一次提交一次。它使用可以包含任意数量(包括零)的提交的优先级队列来实现 优先级队列只保存提交哈希ID。运行时: git log <a

当使用git log--skip=1时,当我使用
--follow
时,它似乎会抑制
--skip=1

  • 为什么会这样?这是设计还是一个bug

  • 有没有办法防止它这样做


  • 目前还不清楚这是“bug”还是“feature”

    --follow
    禁止
    --skip
    不是真的。这个问题更为根本,与git log的工作方式有关

    与任何遍历提交图的Git命令一样,
    Git log
    必须遍历图,一次提交一次。它使用可以包含任意数量(包括零)的提交的优先级队列来实现

    优先级队列只保存提交哈希ID。运行时:

    git log <arguments> <commit-specifier-A> <commit-specifier-B>
    
    git日志
    
    (例如,
    git log master develope
    ),git将给定的提交说明符转换为散列ID,并将所有这些散列ID输入优先级队列。如果不提供提交说明符,Git将查找
    头的散列ID
    ,并将该(单个)提交散列放入优先级队列

    git日志
    代码现在进入其主循环,即:

  • 从队列中删除最高优先级的提交
  • 确定此提交是否“有趣”。如果是的话,展示一下(这部分相当复杂)
  • 使用此提交,查找其父提交。使用命令行上指定的任何修饰符(如
    --no walk
    --first parent
    ),将适当的父哈希集放入优先级队列(前提是它们尚未被访问和/或不在优先级队列中)
  • 重复此操作,直到优先级队列为空
  • --skip
    操作会影响步骤2:如果skip计数非零,
    git log
    会减少skip计数并继续执行步骤3,因此不会显示提交。实际上,提交是“无趣的”(但跳过计数递减)。一旦跳过计数达到零,就不会跳过任何提交:所有提交都将进入“IsThisCommitInterest”测试

    其他日志选项,如用于简化历史记录的选项或您在此处关注的
    --follow
    选项,也会影响步骤2,但仅在
    跳过>0
    测试之后:提交仅在满足某些条件时才有意义

    对于
    --follow
    ,标准(单数)是Git正在检查的(单个)文件路径名是否由提交的父级和提交之间的差异产生。对于只有一个父级的普通(非合并)提交,这个问题比合并提交更容易回答。但是,这里的要点是“基于
    --follow
    显示或跳过此提交”测试发生在跳过计数的测试和减量之后,而不是之前


    如果在“IsThisCommitInterest”测试之后应用了“TestandDecrementSkipCount”测试,那么它将按照我认为您想要的方式运行。但是它没有,所以它没有。对于那些希望
    --skip
    统计提交而不是感兴趣的提交的人来说,这是一项功能。对于那些想通过跳过来计算有趣的提交而不是提交的人来说,这是一个bug。

    不清楚这是“bug”还是“功能”

    --follow
    禁止
    --skip
    不是真的。这个问题更为根本,与git log的工作方式有关

    与任何遍历提交图的Git命令一样,
    Git log
    必须遍历图,一次提交一次。它使用可以包含任意数量(包括零)的提交的优先级队列来实现

    优先级队列只保存提交哈希ID。运行时:

    git log <arguments> <commit-specifier-A> <commit-specifier-B>
    
    git日志
    
    (例如,
    git log master develope
    ),git将给定的提交说明符转换为散列ID,并将所有这些散列ID输入优先级队列。如果不提供提交说明符,Git将查找
    头的散列ID
    ,并将该(单个)提交散列放入优先级队列

    git日志
    代码现在进入其主循环,即:

  • 从队列中删除最高优先级的提交
  • 确定此提交是否“有趣”。如果是的话,展示一下(这部分相当复杂)
  • 使用此提交,查找其父提交。使用命令行上指定的任何修饰符(如
    --no walk
    --first parent
    ),将适当的父哈希集放入优先级队列(前提是它们尚未被访问和/或不在优先级队列中)
  • 重复此操作,直到优先级队列为空
  • --skip
    操作会影响步骤2:如果skip计数非零,
    git log
    会减少skip计数并继续执行步骤3,因此不会显示提交。实际上,提交是“无趣的”(但跳过计数递减)。一旦跳过计数达到零,就不会跳过任何提交:所有提交都将进入“IsThisCommitInterest”测试

    其他日志选项,如用于简化历史记录的选项或您在此处关注的
    --follow
    选项,也会影响步骤2,但仅在
    跳过>0
    测试之后:提交仅在满足某些条件时才有意义

    对于
    --follow
    ,标准(单数)是指Git正在检查的(单个)文件路径名是否由提交的父文件和提交之间的diff生成。对于只有一个父级的普通(非合并)提交,这个问题比合并提交更容易回答。但是,这里的要点是“基于
    --follow
    显示或跳过此提交”测试发生在跳过计数的测试和减量之后,而不是之前

    如果在“此提交是否有趣”t之后应用了“测试和减量跳过计数”测试