问题标签 [git-rev-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1596 浏览

git - 查找给定提交的所有直系后代

如何找到所有以给定提交作为父提交的提交?

例如,如果我有这个 Git 提交图,

我想获得B:D和. 的所有直系后代E的列表F

0 投票
1 回答
891 浏览

git - 哪个管道命令提供与 git log --follow 相同的功能?

为了提高稳定性,我目前正在重构所有与 Git 相关的 shell 脚本,以便它们只使用管道(而不是瓷器)命令。特别是,我试图通过调用(管道)来替换对git log(瓷器)的调用。git rev-list

然而,尽管git rev-list似乎提供了 的大部分功能git log,但它似乎缺少与git log'--follow标志等效的选项,该标志告诉 Git 列出影响路径的提交,甚至超出重命名(例如README-> README.md)。从git log手册页

--follow

继续列出重命名后的文件历史记录(仅适用于单个文件)。

我已经筛选了git rev-list手册页,但找不到任何与git log --follow. 我错过了什么?可以这样做git rev-list吗?还是我应该完全使用另一个管道命令?

0 投票
2 回答
797 浏览

git - git:识别所有不符合模式的提交

我正在尝试使用不以[core]. 这些是我失败的尝试:

  1. 简单的方法

    • 空结果
  2. 启用扩展标志

    • 错误信息fatal: command line, '^(?!(\[core\]).).+': Invalid preceding regular expression

    • git grep 似乎不支持负前瞻。

  3. 将所有提交的列表与带有标签的提交列表进行比较(参见此答案):

    • 结果是sh: syntax error near unexpected token `('

PS:我无法升级到 Git 2.x,所以--invert-grep不是一个选项

0 投票
0 回答
54 浏览

git - Git --min-children,有什么办法吗?

有没有什么干净的方法来获得假设的--min-children=git rev-list 参数的效果?(这当然是 的对应物--min-parents,返回具有指定最小子级数的提交)

我能看到的唯一方法是解析结果rev-list --children以选择具有(列数)=(min-children want + 1)的行,但我想知道是否有更好的方法(以及为什么 git 本身不支持这样搜索)。

我认为这在寻找属于单个功能分支的提交时可能很有用,但总的来说这是一个不错的想法。

0 投票
2 回答
1707 浏览

git - 在我的仓库中,最长的哈希前缀必须多长时间才能防止任何重叠?

--abbrev-commit标志可以与提交对象结合使用git loggit rev-list以显示部分前缀而不是完整的 40 个字符的 SHA-1 哈希。根据Pro Git 书

它默认使用七个字符,但如果需要使它们更长,以保持 SHA-1 明确 [...]

此外,短 SHA 至少有 4 个字符长。仍然根据 Pro Git 书,

通常,八到十个字符足以在一个项目中保持唯一性。

例如,Linux 内核是一个相当大的项目,有超过 450k 的提交和 360 万个对象,没有两个对象的 SHA-1 重叠超过前 11 个字符。

由于防止提交对象的所有前缀哈希之间的任何重叠所需的最长前缀的长度(在 Linux 内核的情况下为 11)是 repo 大小的粗略指标,我想以编程方式确定相应的数量我自己的本地存储库。我怎样才能做到这一点?

0 投票
0 回答
87 浏览

git - 如何显示涉及特定路径的提交树_plus_再提交一次?

我想看看给定的提交如何与文件更改的历史相关。

尝试1:

指定的提交未被选中,根本不包括在内。

尝试2:

更好的。包括提交。但我想让它脱颖而出。我也想要一棵树。

尝试 3:

不是正确的树。--no-walk并且--graph不能很好地一起玩。

尝试4:

提交被选中。但它现在不按路径过滤。基本上gitk似乎忽略了--no-walk

我该如何正确地做到这一点?

0 投票
2 回答
526 浏览

git - 如何在git中找到两个提交的最古老的共同后代?

给定两个(或更多)提交,我想找到加入它们的最旧的合并。类似于相反的东西git merge-base(找到最年轻的共同祖先)。请注意,我正在寻找的提交将是起始提交的年轻后代。

换句话说:我想调查合并两个给定提交的合并提交(同一文件发生更改的地方)。

0 投票
2 回答
5768 浏览

git - “git rev-list origin..HEAD”应该返回什么?

git-rev-list 手册页显示以下命令:

但是,当我运行第一个命令时,出现以下错误:

'origin' 指的是以下遥控器:

我是否错误地使用了该命令?另外,我认为 rev-list 命令将提交作为输入,所以我不清楚为什么手册页使用远程的 'origin'。我误解了什么?

0 投票
1 回答
330 浏览

git - 如何使用 git blame -S

revs-file参数的格式是什么git blame -S

我尝试使用以下输出运行它,git rev-list但将每一行归咎于HEAD提交。

git blame -S <(git rev-list HEAD~50 HEAD) $file

我也尝试过运行<(git rev-list ... | tac)以扭转出现revs-file问题的情况,但它似乎产生了相同的输出。

目标是将 的每一行归咎于和$file之间的提交,如果所有提交中都存在同一行,则默认为。HEAD~50HEADHEAD~50

0 投票
2 回答
218 浏览

git - rev-list 和 diff 之间对称/不对称的符号异常

我试图理解git diffvs. git rev-listor之间的符号差异的基本原理(如果有的话) git log

澄清:

我了解每个命令的作用,如下所述。我只是想解释一下为什么 Git 会在两个不同的命令中使用相同的符号,以便一个直观地(IHO)与另一个相反。

git log/rev-list

在 log 和 rev-list 中,当您想查看分叉分支的两侧(对称)时,符号是三个点 ( ...)。例如,

而两个点 ( ..) 只会显示右侧(不对称)。例如,

混帐差异

但是,使用 git diff 两个点 ( ..) 显示了对称差异(我的话),即,它显示了列出的两个确切提交之间的差异,例如,

显示 aaaaa 和 bbbbb 的树之间的差异。

而三个点 ( ...) 显示了不对称差异,即,它显示了两个提交的合并基础与第二个提交之间的差异。例如,

显示 00000 和 bbbbb 的树之间的差异。