问题标签 [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.
git - Git 提交范围中的双点“..”和三点“...”有什么区别?
一些 Git 命令采用提交范围,一种有效的语法是用两个点分隔两个提交名称..
,另一种语法使用三个点...
。
两者有什么区别?
git - 如何列出数据库中的所有 git 对象?
有没有比获取存储库中所有对象的 SHA1 原始列表更好的方法:
ls .git/objects/??/\*
和
cat .git/objects/pack/*.idx | git show-index
我知道,git rev-list --all
但这仅列出了由 引用的提交对象.git/refs
,并且我正在寻找所有内容git-hash-object
,包括由等创建的未引用对象git-mktree
。
git - git-rev-list 的排序
git-rev-list 如何排序它返回的提交?
我主要指的是并发开发分支上的提交,然后合并到主分支中。提交似乎没有按日期排序,这是有道理的,因为提交可以从过去或未来的不同时间中挑选出来。
例如,这里有一些历史git-log
......
这是通过 rev-list 输出的相同历史记录。
rev-list 命令如何决定是列出第一个父级还是下降到第 n 个父级的提交图中?例如,在查看 (1) 之后,rev-list 下降到第二个父级 (2)。然而,在查看 (3) 之后,它下降到第一个父级 (4)。这种行为是否明确?
git - 查找包含多个特定提交的 Git 提交
一般问题:给定一组提交,我如何找到所有这些提交作为祖先的提交列表,或者相关地,包含所有这些提交的第一个提交。
git branch --contains <commit>
我可以通过查找集合中所有提交返回的分支来找到包含提交的分支(类似标签) ,但git rev-list
没有--contains
选项。实际上,我正在寻找一种将常规--contains
参数与结合的方法,git rev-list
并将输出限制为包含所有列出的提交的提交,而不是其中的任何一个(这是--contains
正常工作的方式)。
具体示例:给定 commits a
, b
, c
,我如何找到第一个在其祖先中包含所有三个提交的提交?
例如,给定下面的树,我如何找到标记为 X 的提交?
我认为我可以用 做一些魔法git rev-list
,并且可能涉及<commit1>...<commit2>
符号,但我无法进一步解决。
git - 在 git 中,列出自某个标签以来的所有标签
我正在使用标签来识别发布版本并识别任务的“开发完成”提交。做一个git tag
我得到一个如下的列表。
假设所有标签都指向master
分支上的提交,有没有办法列出自某个标签以来的所有标签?例如,要生成包含在v0.1.2
发布中的所有任务的列表——我正在寻找类似以下的内容(这不是实际命令)。
获得如下输出。
有没有办法做到这一点git tag
?
有没有办法做到这一点git rev-list
?
(或者其他一些 git 命令?)
更新
根据答案和评论,以下是我目前正在使用的。
第二次更新
新选择的答案。这正是我最初想要的。优雅得多。
git - git rev-list --all --objects 因内存不足而失败,malloc 失败
我正在尝试运行:
使用 32 位 cygwin,但它失败了:
这对应于回购历史早期提交的大型 blob 的大小。
通过使用以下技术:
我能够使用 64 位系统重新打包 repo 的克隆,并将其重新同步回 32 位系统,我现在可以将更新从 64 位 repo 获取到 32 位系统,但是,git rev-list - -objects --all 在 32 位 repo 上仍然失败。
有什么选项可以用来防止 git rev-list 在这个 repo 上失败?
git - 缩小 Git Repo - 数据包中的对象,而不是提交中的对象
我正在尝试缩小大约 2GB 的 Git 存储库。
我正在关注 ProGit 书中第 9 章(9.7)的“删除对象”部分:http: //git-scm.com/book/en/Git-Internals-Maintenance-and-Data-Recovery
运行git gc
,然后是git verify-pack
andgit rev-list
命令后,我发现了一个.tar
大约 118MB 的文件。我根本不需要它在我的回购中。它需要永远摧毁。
但是当我试图找出哪些提交使用了该文件时,我什么也没得到:
这是否意味着该文件不在存储库历史记录中?如果是这种情况,我可以离开它还是当我这样做时它仍然会被推上去git push
?
如果是这种情况,我该如何摆脱它。
git - Git提交范围中的“A..B”(双点)与“--right-only A...B”(过滤的三点)?
比较Git 提交范围中的双点“..”和三点“...”有什么区别?,一个更常见的有用问题。
我想澄清以下是否产生与以下相同的提交集git log A..B
:
他们似乎是更迂回的方式来完成同样的事情。
最初的动机是更深入地理解这些命令的含义,其中涉及忽略已经挑选的提交:
这个问题的延伸是问为什么需要对称差异(即三点)来进行这种“单面”的樱桃挑选消除。例如,要找到 B 上的唯一提交,包括对樱桃挑选的更正,不应该做一些简单的事情
我想这是因为 git 在过滤掉所有带有A..B
. (也就是说,在这个假设的命令中,git 在尝试应用挑选逻辑之前会丢弃与 A 相关的任何内容。)
git - 将 git rev-list 与 git show 结合使用
目前要审查在分支上所做的提交,我执行以下操作:
但是,这会按时间倒序列出提交。我想回顾从第一个开始到最近的提交。要按此顺序获取提交哈希,可以使用
但谁能告诉我如何将它传递给显示或 difftool?
git - 是否从特定分支合并到主分支?
我在 Git 存储库中有两个主要分支 - 开发和掌握。新功能开发发生在develop分支中,然后合并到master中进行部署。
我想确定从某个时间以来是否发生了从 develop 到 master 的合并。我什至对实际提交本身并不真正感兴趣,只是开发中的某些内容已合并到 master 中。
我努力了:
git rev-list --merges origin/develop..origin/master --since <date> | wc -l
在我知道有合并的一段时间内,但它似乎总是返回零。
更新
另外,我试图一步一步地建立它。从...开始:
git rev-list --merges origin/master --since <date>
我从开发分支和可能存在的任何修补程序分支中获得了所有合并到 master 中。只有当我添加“起源/开发”约束时,我才能得到任何结果。