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

标签 git git-log git-rev-list

给定一个包含数百个分支/数千个提交的大型 git 存储库,以及不规则的分支 merge 策略,如何确定两次提交之间的最短路径?换句话说,从较早的提交 A 到较晚的提交 B 的哪条分支路径中交叉的提交次数最少?

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

最佳答案

我不确定你在问什么,但要找到 A 如何到达 B,你可以使用以下内容:

git log commitA..commitB

您可以使用 --graph--simplify-merges 标志使其更加清晰。

您还可以像这样美化日志:

git log --simplify-merges --graph --pretty="tformat:%C(yellow)%h%Creset\\ %Cgreen(%ar)%Creset\\ %C(blue)<%an>%Creset\\ %C(red)%d%Creset\\ %s"

并获得如下输出:

enter image description here

关于Git:如何找到提交之间的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545195/

相关文章:

git diff --check 显示不相关分支/文件的更改

git:获取沿一个特定文件修改的文件列表

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

git - git-rev-list 的排序

python - Django 设置.py : Separate local and global configuration

git - 无法 git fetch - 对等方重置连接

git - 如何将新的(重写的)历史推送到远程存储库

Git 日志按作者或提交消息显示提交

git - 查找包含多个特定提交的 Git 提交

git - 将一个分支的未暂存更改转移到另一个分支