git:如何找到已经合并的两个分支的共同祖先

2023-12-28

为了找到 2 个 git 分支的共同祖先,需要执行以下操作:

git merge-base branch another_branch

好的。但是...如果两个分支已经合并怎么办?当我使用merge-base在这种情况下,我得到的提交是合并之前的最新提交,并且我想知道两个分支“合并之前”出现的共同祖先。

换句话说:

Z - A - B - C - D - E - F
     \          /
      G - H - I 

HEAD位于 F。如果我做一个git merge-base在这里,我得到的提交是I,我要找的是A,或者可能是Z。有没有git指令可以找到它?


如果你这样做

git merge-base C I

你得到了你想要的提交A。 C和I是什么?它们是合并提交 D 的父提交。

你如何得到它们?

git log --pretty=%P -n 1 D 

给你两个字符串。这两个字符串是您需要的提交 C 和 I。

如果你想一起做这一切,你可以写

git merge-base $(git log --pretty=%P -n 1 MERGE_COMMIT)

您必须将 MERGE_COMMIT 替换为合并提交 D 的哈希值

编辑: 正如@poke所说,它更简单

git merge-base MERGE_COMMIT^ MERGE_COMMIT^2 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git:如何找到已经合并的两个分支的共同祖先 的相关文章

  • Git:列出应该被忽略但没有被忽略的文件

    Note 这不是关于修复git rm r cached git add 我实际上希望能够只列出文件 Why 有时当我编辑我的 gitignore并忘记上面的命令 我最终得到的文件仍然在存储库中 但应该被忽略 What 我想要完成的是编写一个
  • 哪种 git commit 实践更好?

    我坚信 对一个问题做出一次承诺是一种很好的做法 我确信我在 最佳实践 之类的文章中读过它 因此 我的工作流程如下 对于新问题 我创建了一个新的本地分支git checkout b new issue 将所有更改提交到其中 有时这涉及到lot
  • 在 Windows 上,无法创建目录“/home/<用户名>/.ssh”

    要使用 gitbash 在 Windows 上配置 git 如所解释的here https help github com articles generating a new ssh key and adding it to the ssh
  • 版本控制 rpm 规范文件

    我正在配置一台构建机器来为大量非常相似的项目生成 rpm 每个项目的规范文件在名称上以及有时在依赖项和其他属性上都略有不同 每个项目都有自己的 git 存储库 其中包含项目文件 这些规范文件仅存在并且实际上仅对构建系统本身有用 每个项目都可
  • 从私有 GitHub 存储库迁移到公共和私有

    我使用 GitHub 上的私人存储库开发了一个客户项目 我们现在要做的就是开放其中的某一部分 并产生该项目的开源版本 我们的想法是 客户的版本将在此基础上构建 对开源版本所做的任何更改也应适用于私有版本 现在的问题是我不能将当前的 GitH
  • 如何将 HEAD 移回之前的位置? (分离头)和撤消提交

    在 Git 中 我试图做一个squash commit通过合并到另一个分支然后重置HEAD通过以下方式前往上一个地点 git reset origin master 但我需要走出这一步 如何将 HEAD 移回之前的位置 我有 SHA 1 片
  • git pull:无法快进,

    你能帮我解决我的问题吗 当我尝试从 dev 分支拉取时发生错误 我浏览了解决方案 它说我需要 rebase 但它对我来说没有成功 CT aohc MP1GYWQA MINGW64 c TCO source RAPMD Web Fronten
  • VS Code / Bitbucket / SSH - 权限被拒绝(公钥)

    我试图通过 ssh 从 vscode 访问 bitbucket 但总是得到权限被拒绝 公钥 SSH 密钥位于 ssh 公钥已正确设置在bitbucket settings security sshkeys 按键已经过测试并且可以工作 启动后
  • Git 将新的本地分支推送到远程,无需指定名称

    当针对特定的跟踪问题进行补丁修复时 我们的工作流程如下所示 1 git checkout patch git pull upstream patch make sure we re up to date 2 git checkout b i
  • 如果检测到更改中的特定短语,如何阻止 git commit?

    我注意到开发人员倾向于做的一些模式 例如使用以下代码提交 javascript 测试fdescribe or fit留在其中 这意味着只有一个测试 套件将运行 通常是在审查阶段发现的 但最好尽早发现这些小事情 想知道是否有一种方法可以配置
  • 当存储在变量中时,Git 提交消息变得混乱[重复]

    这个问题在这里已经有答案了 我有一个 Git 提交 其中有一个摘要 然后是一些描述 所以当我看到提交消息时git log format B n 1
  • 致命错误:找不到“Fabric/Fabric.h”文件

    我正在使用 xcode 6 3 1 OSX 10 10 3 并且我已经在本地系统上成功配置了 crashlytics 它工作正常 并通过 Fabric 应用程序发布构建 但是当我将相同的代码库转移到 teamcity 时 它向我显示以下错误
  • 将环境变量从 fastlane 传递到 Xcode 构建阶段脚本

    是否可以 如果可以 如何 将环境变量从运行 fastlane 的脚本传递到 Xcode 运行脚本阶段 我的最终目标是在运行脚本阶段读取当前的 git 分支名称 我们的 CI 由 Team Foundation Server 运行 它执行以下
  • Emacs shell:保存提交消息

    我几天前开始使用 emacs 在 emacs shell M x shell 中使用 git 时遇到问题 当我 git commit 或 git commit amend 时 它会打开 vim 来编辑并保存提交消息 我对此表示同意 但我找不
  • 空提交的 Git 补丁

    我创建一个空提交 git commit allow empty m something important 有时它很有用 例如协调 2 个 或更多 不同的 git 树 然而 当我 git format patch 空提交被省略 因为它们不与
  • dulwich - 从远程仓库身份验证克隆

    我找不到有关此主题的任何资源 我需要通过提供用户名和密码从私有存储库进行克隆 然而 当它们作为关键字参数提供给 dulwich get client from path 时 会出现错误 提示 未知参数 用户名 这似乎是一件简单的事情 但我找
  • 如何使用 GitLab 管道中的密钥通过 SSH 连接到目标服务器?

    当 GitLab 管道成功时 我想通过 SSH 使用公钥连接到服务器 正如我所看到的 我需要在 GitLab 端使用 ssh keygen 生成一个密钥并将其添加到我想要连接的服务器上 我可以在管道期间生成密钥 但由于公钥未添加到目标服务器
  • 从子文件夹自动部署 Heroku

    我知道你可以从github自动部署到heroku 但我还没有找到一种方法只将子文件夹从github推送到heroku 从命令行我知道可以通过以下方式执行此操作 git subtree push prefix
  • 如何在 git merge 提交中列出冲突的文件(父级都有更改的文件)?

    qgit 有一个很好的选择 可以在合并提交中查看 有趣 的文件 其中有趣的文件被定义为在两个父文件中都有更改的文件 查看此类文件的相应命令行是什么 git show name status SHA1 of merge 将向您显示提交消息和在
  • Mac 操作系统屏幕上的 Git 自动补全

    我在 mac 上使用 git 并配置了自动完成功能 如下所示http www codethatmatters com 2010 01 git autocomplete in mac os x http www codethatmatters

随机推荐

  • Firebase 导致“线程 1:信号 SIGABRT”

    我启动了一个空白的 Xcode 项目 我所做的就是通过 Cocoapods 添加 Firebase 框架并导入 Appdelegate 和 viewcontroller 当我添加FIRApp configure to didFinishLo
  • 在 Android 中通过 Intent 传递信息后将项目添加到 listView

    我正在尝试添加一个项目 首先使用添加按钮 然后转到不同的活动 然后返回原始活动并将其添加到列表视图中 我似乎不能拥有超过一件物品 AddScreen class 我的第一个活动 package com painLogger IMPORTS
  • 如何在C++中读取空字符串?

    考虑 C 中的这段代码片段 string str cin gt gt str 如果我在这个阶段简单地按回车键 指针就会移动到下一行 但会继续等待输入 即使我故意想输入一个空字符串 我的目标是读一个单词 如果我按 Enter 键 它应该被视为
  • 手机是否需要连接到互联网以便网络提供商可以确定位置?

    手机是否需要始终连接到互联网 以便网络提供商可以确定位置 当我在手机上测试我的应用程序时Settings gt Location only Use wireless network已选中 并且我未通过 Wi Fi 连接到互联网 因此无法获取
  • 将 Git 与 TFS 2017 结合使用 - 可在 Visual Studio 中使用,但不能在命令行中使用

    最近 我们的项目使用 Git 切换到 Team Foundation Server 2017 如果我们通过 Web 界面或 Visual Studio 使用它 我们的 TFS 工作得足够好 但如果我们尝试使用第三方工具 如 Sourcetr
  • 在核心数据持久存储中传送静态(只读)数据的正确方法是什么?

    我想发送静态只读数据以在我的核心数据模型中使用 问题是 存在明显不同的持久存储类型 我不知道这些类型的格式是否应该是不透明的 或者我是否应该能够手动构造它们 现在我只有一个 plist 而且非常小 总共可能有 30 个条目 我是否应该在首次
  • 将 pdf 附件添加到 WooCommerce 已完成订单电子邮件通知

    在另一个线程上找到此代码 但无法使其工作 PDF 上传到 wp content child theme 目标是将 pdf 附加到 woocommerce 将发送的已完成订单电子邮件中 不知道customer completed order是
  • 在map.forEach期间map.delete(key)

    通常 当您循环访问列表时 无法安全地从列表中删除项目 这个概念对于 ES6 地图仍然适用吗 我尝试了这个简单的测试 没有例外 var map new Map a 1 b 2 c 3 map forEach value key map gt
  • 捕获 Windows 上的访问违规

    我试图捕获应用程序中所有未处理的异常 以便在发生异常时可以保存日志文件 这是一个使用 Visual Studio 2013 编译的 64 位 Windows 应用程序 用 C 编写 为了进行测试 我使用 VS 生成的默认 C Win32 项
  • rebol解析函数可以创建完全解析css2/css3的规则吗?

    rebol 解析函数的能力有限制吗 它是否能够解析整个 css2 css 3 规范 或者是否会遇到理论上不可能形成某些规则的情况 HostileFork 回答后更新 我的意思是在正则表达式中我认为这是相当不可能的 解析是否更强大 如果是 这
  • Angular 指令中的单向绑定

    官方Angular 文档用于编译 https docs angularjs org api ng service 24compile讨论单向绑定类型 lt 在角社区 I see 通常称为 单向绑定类型 是什么赋予了 这 在我看来 这并不是真
  • Python 中单独线程中的按键回显不显示第一个击键

    我会尝试发布一个最小的工作示例 但不幸的是这个问题只需要很多部分 所以我已尽我所能将其剥离 首先 我使用一个简单的脚本来通过函数调用模拟按键 这是调整自here https stackoverflow com a 13290031 2924
  • 多处理队列批量获取最多 N 个元素

    我需要以阻塞方式从队列中获取尽可能多的项目 最多 N 个 例如 queue get 16 最多应返回 16 个元素 但如果为空则阻塞 没有内置这样的工具 因此您需要自己编写代码 例如 import queue in Python 3 Que
  • AWS SES 与 PHPMailer 使用 SMTP,SMTP 错误:无法进行身份验证?

    我收到以下错误 身份验证凭据无效 我已经仔细检查了用户名 访问密钥 ID 和密码 秘密令牌 一百万次 我仔细检查了发送到服务器的 base64 它是正确的 用户有正确的访问权限 允许来自 EC2 服务器的所有出站流量 SELinux 已禁用
  • 排除 Dplyr 中 Dot 中的周末

    这是这个答案的延续问题 https stackoverflow com a 45254762 5893585 https stackoverflow com a 45254762 5893585 我正在使用do函数于dplyr内prophe
  • Django更新到1.6后Android http post请求返回403

    我正在编写一个 Android 应用程序 它将 JSON 格式的数据发送到本地服务器上运行的 Django REST API 它是与服务器的 https 连接 所有必要的证书都集成到应用程序中 在我们更新到 Django 1 6 之前 我们
  • 如何在 Pycharm 中复制和粘贴?

    每次我尝试将网址复制并粘贴到 PyCharm 中时 我什至尝试过 简单粘贴 但我什么也没看到 是否有任何力量可能阻止试图粘贴信息的人 我真的不知道发生了什么事 您很可能在首次安装 PyCharm 时安装了 IdeaVim 支持 要卸载插件
  • 如何使用 Maven 将我的 Web 应用程序和 Tomcat 打包在一起?

    我想分发打包为嵌入 Apache Tomcat 中的 WAR 的应用程序 也就是说 我想将 Tomcat 与我的应用程序一起分发 如何使用 Maven 来完成这种分发打包 我见过Maven 货物插件 http cargo codehaus
  • 为什么将 float32 转换为 float64 时会丢失精度?

    在 Go 中 将 float32 数字转换为 float64 精度会丢失 例如 将 359 9 转换为 float64 会产生 359 8999938964844 如果 float32 可以精确存储 为什么 float64 会失去精度 示例
  • git:如何找到已经合并的两个分支的共同祖先

    为了找到 2 个 git 分支的共同祖先 需要执行以下操作 git merge base branch another branch 好的 但是 如果两个分支已经合并怎么办 当我使用merge base在这种情况下 我得到的提交是合并之前的