问题标签 [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 投票
3 回答
639 浏览

git - 确定通过git中的合并提交引入分支的提交?

我正在尝试确定由于使用合并 ID 进行合并而引入父分支的提交。

0 投票
1 回答
146 浏览

git-log - 德威备忘单:如何重现“git log”?

亲爱的社区成员,

我正在开发一个代码分析系统,并想用 Dulwich 模块替换对 CLI Git 应用程序的调用。作为第二步,我需要将“git log”命令替换为 Dulwich 等效命令。

具体来说,我正在尝试重现以下命令:

必须类似于:

我的最终目标是获取与给定文件相关的 blob 列表(例如,用 SHA 表示)。

实现它的最佳方法是什么?

0 投票
0 回答
96 浏览

android - 如何使用 git rev-list 列出要变基的补丁

我正在开发一个 Android 代码库,其中我在 AOSP 的几个存储库中有很多本地分支。我想自动化这个过程以重新定位到最新的谷歌根清单。对于给定的 AOSP 存储库,我想计算我必须变基的补丁。我想计算从旧根清单分支出来的补丁列表,然后将它们应用到新清单之上。我试过了

为此,其中 sha1 是分支的顶级 SHA,sha2 是来自新根清单的新 SHA。然而,除了顶部列出的正确补丁之外,还有很多随后列出的补丁。在真正的补丁进程中,它们会在很长一段时间之后出现,并且在逻辑上应该是两个分支的一部分,因为旧的根清单是新根清单的父级。然而,它们似乎只出现在一侧。例如系统/核心:

补丁

将是分支上的那个,这些是我正在寻找的补丁,但是下一个:

很久以后才会出现,而且只出现在补丁游行的一侧。似乎与reverts有关系。

问题:是否有我缺少的选项rev-list来抑制此补丁(可能与还原有关)?

0 投票
1 回答
503 浏览

git - Git rev-list:排除已包含在合并中的提交

我有一个带有 master 分支的存储库,该分支经常从不同的缺陷分支合并,如下图所示(defect1 是缺陷分支的名称):

我想检索主分支的所有提交的列表,从前一个提交 A 直到头部(在本例中为 E)。由于我的项目的特定用例,此列表将用于恢复所有提交。

我一直在使用以下方法收集此列表git rev-list

git rev-list "${commitA}~1"..origin/master

问题是,当我这样做时,我得到了提交 X 和 Y,而提交 D 已经包含了提交 X 和 Y 的更改。我可以使用git revert -m 1. 当我尝试恢复 X 并且 YI 得到一个错误,因为提交不在主树中。我只想检索 A~1、A、B、C、D 和 E。我可以轻松地执行以下操作:

git rev-list "${commitA}~1"..origin/master ^defect1

但是可以有多个具有不同名称的缺陷分支,并且无法提前知道它们的名称。

git-rev-list 中是否还有其他选项可以启用此行为?

0 投票
1 回答
423 浏览

git - Git:如何找到提交之间的最短路径

给定一个包含数百个分支/数千个提交的大型 git 存储库,以及不规则的分支合并策略,如何确定两个提交之间的最短路径?换句话说,从较早的提交 A 到较晚的提交 B 的分支路径是什么路径穿过最少数量的提交?

(在我的情况下,我试图追踪一个“开发”分支的历史,该分支通过快进无意中被合并到功能分支中。“最短路径”策略似乎是一种实用的方法,但我一直在寻找git-log 和 git-rev-list [v1.8.3.1] 的帮助页面,但没有找到任何似乎可以做到这一点的选项。我是否遗漏了一些明显的东西?)

0 投票
1 回答
170 浏览

git - Git:如何在 Windows 上发出 rev-list --stdin 输入结束的信号

我正在使用git rev-list --stdinWindows 命令提示符。我正在进入--一些路径,每行一个。

如何向 Git 发出我已完成输入路径列表的信号?我试过Ctrl+ ZCtrl+ CCtrl+D但似乎没有一个按预期工作。

文档没有提到它: https ://git-scm.com/docs/git-rev-list

我发现这个对 Unix 有帮助的相关问题,但似乎不适用于 Windows: https ://unix.stackexchange.com/questions/16333/how-to-signal-the-end-of-stdin-input

0 投票
1 回答
63 浏览

git - 带有符号引用的 git 包

我正在尝试与异地开发团队分享我们的 git 存储库。我们没有“主”分支。我们有 A/master、B/master 和 C/master。我的 pub repo 中有一个象征性的 ref

HEAD -> refs/heads/B/master

当我创建捆绑包git bundle create my.bundle --remotes --tags时,我最终得到了两个对 refs/remotes/origin/B/master 的引用,这会导致git clone --mirror my.bundle失败。有没有办法忽略符号参考?

0 投票
1 回答
292 浏览

git - 获取最近在 git 文件夹中更改的文件的名称

我正在尝试获取具有最近更改的文件名的名称。例如,一个文件夹包含三个文件 file1.txt、file2.txt 和 file3.txt。我正在尝试拥有一个 powershell 脚本,该脚本根据 git log 或 rev-list 捕获文件的名称并选择它的名称。此外,如果有人添加了另一个名为 file4 的文件,那么它必须由变量选择。

git log -n1 的问题是它只能在 file1.txt 更改时捕获文件名,而如果我更改 file2.txt 则它会失败,但是如果我更改 git log -n2 然后它会捕获 file2 中的 chagne但是如果 file1 被更改或者如果 file4 添加了,那么它就会失败。

git rev-list -a --all 的问题在于它提供了更多的输出,然后只是一个文件名,并且不知道如何使用像 log 这样的漂亮格式。

谢谢!

0 投票
0 回答
27 浏览

bash - 自动将其他有用信息添加到 git 存档文件名

偶然发现了这个 gem:将所有提交导出到 ZIP 文件或目录中,其初始答案满足我将来自某些分支(例如开发)的提交导出到单独的 zip 文件的需要——所有这些都是通过一个简单但聪明的单行完成的:

在我的版本中,我--all--first-parent develop.

我现在想做的是通过在文件名中包含提交日期和提交作者来使文件名更有用。我用谷歌搜索了一下,摸索了 git 存档文档,但似乎没有找到我可以使用的任何其他“参数”,这些“参数”很容易获得,比如 $hash。

我猜我需要扩展循环并单独调用相关位,将它们保存到 bash 变量中并使用 ${author} 之类的东西将它们传递给输出选项,除非其他人知道更清洁、更简单的方法这样做,或者可以指向我可以从 git 的其他部分提取所需信息的文档或其他示例?提前感谢您的任何见解。

0 投票
1 回答
14 浏览

git - 运行 git rev-list B2 ^B1 时有没有办法识别恢复的提交?

我试图找到存在于一个分支中但不存在于另一个分支中的所有提交。看下图,我想知道 B2 中有什么不在 B1 中。当我尝试以下命令时:

我只取回提交 c2,即使 c1 在进入 B1 之前已恢复。有没有办法检测这种情况,以便同时取回 c1 和 c2,因为它们的更改在技术上不包含在 B1 中?

比较两个分支之间的恢复提交