Git:如何列出合并分支上的提交?

2024-01-10

这是如何列出分支上的提交但不列出合并的分支 https://stackoverflow.com/questions/10248137/git-how-to-list-commits-on-this-branch-but-not-from-merged-branches,所以我会以相同的格式询问。假设我的 git 提交历史记录如下所示:

A---B---C---D---E---F master
     \         /
      X---Y---Z topic

如何列出提交topic分支——也就是说,X, Y, and Z?请注意,只需做git log topic不起作用——这将返回提交A and B以及。

我本来以为我可以跑git merge-base topic master找到B,然后做git log B..Z获得这些提交。很遗憾,git merge-base topic master回报Z, not B,回想起来这是有道理的——因为Z已经合并到master,之间的第一次提交topic and master分享历史的是Z.


如果你只合并topic to master once,并且您知道您合并了topic into master在合并提交中E,您可以简单地使用<rev>^-<n>修订语法 https://git-scm.com/docs/gitrevisions#Documentation/gitrevisions.txt-emltrevgt-ltngtemegemHEAD-HEAD-2em:

git log E^-

如果你不记得提交的哈希值E并希望有一种简单的方法可以根据您的分支名称找到它(topic),您可以使用问题中的答案之一“查找包含特定提交的合并提交” https://stackoverflow.com/questions/8475448/find-merge-commit-which-include-a-specific-commit。我个人喜欢git when-merged https://github.com/mhagger/git-when-merged:

git when-merged topic

把它们放在一起:

git log $(git when-merged -c topic)^-

如果你合并了topic几次到master,那么上面的语法将仅列出在最近的合并提交中合并的提交。在这种情况下,您可以使用 Rocketraman 的mergedtopiclg alias https://gist.github.com/rocketraman/1fdc93feb30aa00f6f3a9d7d732102a9#file-gitconfig-L73-L75

git mergedtopiclg $(git when-merged -c topic)

为了完整起见,此别名配置为

    mergedtopiclg = !sh -c \"git lg $(git oldest-ancestor $1^2 ${2:-master})..$1^2\" -
    # The oldest ancestor between an integration branch (by default, master) and a topic branch (by default HEAD)
    # e.g. git oldest-ancestor master ai/topic
    # See http://stackoverflow.com/a/4991675/430128
    oldest-ancestor = !bash -c 'diff --old-line-format= --new-line-format= <(git rev-list --first-parent \"${1:-master}\") <(git rev-list --first-parent \"${2:-HEAD}\") | head -1' -
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git:如何列出合并分支上的提交? 的相关文章

  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 卡在 git 提交窗口

    我被困在这个窗口了 我做了一个git add a就在之前 然后git commit在 git cmd exe 中 我怎样才能离开这里 我写了我的提交消息并按回车键 但什么也没发生 我担心只是关闭窗口 我在互联网上找不到任何内容 官方网站没有
  • Git 分支名为 origin/HEAD -> origin/master

    我对 Git 还很陌生 但仍在掌握它的窍门 我最近刚刚开始与分支机构合作 遇到了一些问题 我有两个开发系统 一个 Ubuntu 桌面和一个 MacBookPro 我在新的环境中做了很多工作organizationsUbuntu 系统上的分支
  • 将远程存储库导入为具有完整历史记录的子目录

    我想将远程存储库作为具有完整历史记录的子目录进行合并和解耦 有多种方法和问题可以实现这一点 我的第一次尝试是使用subtree但它似乎没有重写文件的历史记录 所以我无法查看合并存储库的历史记录 接下来的尝试是手动合并它 就像 Seth Ro
  • Git - 在特定提交之前压缩历史记录中的所有提交

    我有一个 Mercurial 存储库 正在将其转换为 Git 提交历史记录非常大 我不需要新存储库中的所有提交历史记录 一旦我将提交历史记录转换为 Git 并且在推送到新存储库之前 我想将某个标记之前的所有提交压缩为一个提交 所以 如果我有
  • 用于维护项目扩展分支的 Git 工作流程?

    我们在 GitHub 上分叉了一个 OSS 项目 并向其添加一些自定义扩展 我们希望将我们所做的一些更改发送回原始项目 错误修复等 但其他更改是原始项目维护者目前不感兴趣的功能扩展 我正在尝试找出管理这种情况的最佳工作流程 我希望我们的主分
  • 如何将Github中的develop分支设置为默认分支而不是master?

    我知道这可以在存储库的管理页面上完成 可以在那里设置另一个默认分支 这就是这个问题的答案 但我发现 也许是一个错误 以下内容 如果你的master分支和develop分支完全相同 那么git克隆将不会克隆默认的 develop 分支 但仍然
  • Git 错误:引用名称“HEAD”不明确

    我对 git 还很陌生 目前 我尝试按照本教程使用分支名称和版本覆盖我的应用程序的图标 http www merowing info 2013 03 overlaying application version on top of your
  • git分支没有显示所有分支

    opt lampp htdocs drupal 8 4 0 git branch 我已经在我的系统中安装了drupal 我想切换到其他分支 但是当使用git分支时不显示其他分支 Execute git branch av显示所有远程和本地分
  • 你遇到过哪些 git 陷阱?

    我遇到的最糟糕的情况是 git 子模块 我在 github 上有一个项目的子模块 该项目无人维护 我想提交补丁 但无法提交 所以我分叉了 现在子模块指向原始库 而我需要它指向 fork 因此 我删除了旧的子模块 并将其替换为同一提交中新项目
  • 单个分支的 Git 导出

    我在本地的 git 存储库上工作 它有各种分支 例如开发分支 一些用于实验更改的分支等等 当然还有主分支 我想设置一个公共 嗯 确实是一个局域网的东西 最好说 共享 存储库来仅包含主分支 如何导出该分支以便我可以将其复制到目标文件夹 谢谢
  • 如何从“分离头状态”恢复提交?

    我检查了另一个有更新的分支 然后做了一些更改 切换回主 git 现在更改消失了 我可以把它们找回来吗 终端基本上是 git commit detached HEAD 7c09e17 Fixed some stuff files change
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • 如何克隆 bitbucket 存储库?

    一段时间后重新开始工作 我似乎不知道如何克隆 bitbucket 存储库 知道为什么我收到 未找到 错误吗 git clone verbose https bitbucket org helllamer mod openid Cloning
  • 如何删除所有意外添加到git系统的本地文件

    我是 git 系统的新手 我可能犯了一个错误 将我所有的本地文件集成到 git 系统中 当我说出现以下错误时 我使用 vs代码编辑器 并放弃所有更改 Git fatal You are on a branch yet to be born
  • .gitattributes 没有什么区别,在使用 git difftool 时尝试跳过文件

    我已经阅读了 Git Pro 网站 并且在 StackOverflow 上阅读了多个答案 但遗憾的是我根本无法让 gitattributes 为我工作 每当我使用git difftool 它将尝试显示二进制文件之间的差异 例如图像文件 PN
  • git - 奇怪的分支合并错误,我不知道如何解决

    当我 git status 时 我收到以下错误消息 On branch master Your branch and origin master have diverged and have 1 and 2 different commit
  • git LFS 如何比 git 更高效地跟踪和存储二进制数据?

    我知道 git LFS 导致 git 在文本文件中存储字符串 指针 然后 git LFS 下载该目标二进制文件 这样 远程 git 服务器上的 git repos 就会更小 但是 git LFS 仍然必须存储二进制文件 所以在我看来 本地存
  • GitHub 恢复或重置? [复制]

    这个问题在这里已经有答案了 正如您在图片中看到的 我正在功能 forum kolo 3 中工作 我决定完成该功能并将其合并到开发中 但没有将更改推送到远程开发 因此它只是本地更改 然后我意识到这是一个坏主意 现在我想删除这个合并 就像它从未
  • 如何欺骗 git-svn 来识别使用 svn 进行的合并?

    我们有一个 SVN 设置 具有稳定的主干和不稳定的开发分支 开发工作 大部分 在分支上完成 然后在部署之前合并到主干 我使用 git svn 作为我的 SVN 客户端 我从unstable到trunk的合并过程如下 git svn fetc

随机推荐