【问题标题】:How do I check if an old commit of a deleted branch that has been merged exists in develop?如何检查开发中是否存在已合并的已删除分支的旧提交?
【发布时间】:2022-10-20 04:31:08
【问题描述】:

基本上,我正在尝试编写一个脚本来确保某个提交已被合并。

当我尝试在终端中执行命令 git branch --contains 0871b8479e6332ee3bd7a1ea9ea5b53795c3b3c5 时,我遇到以下错误:

没有这样的提交 0871b8479e6332ee3bd7a1ea9ea5b53795c3b3c5

此提交是现在已合并的分支的其中一个提交的哈希(并且该分支随后被删除)。我需要一种方法来确认此提交已从 shell script/github cli 合并到开发分支中。

PS:我尝试过使用其他基于分支的方法,例如 git branch -a --merged,但我仍然无法确认我的分支或我的提交是否已合并。

【问题讨论】:

  • 从 gitk 之类的东西开始,找到合并分支的地方。您可能会发现分支在合并之前已被压缩/重新定位,并且您正在考虑的提交的具体化身确实不再存在。
  • 换句话说,我们提交以修改某些内容。重要的不是提交,而是它引入的修改。如果可以,请在代码或您在版本控制中维护的任何其他内容中搜索它。它更容易也更有意义。
  • 错误消息告诉您给定的提交是当然不在存储库中。因为提交本身不存在,所以您无法从 Git 获得与该提交本身有关的任何其他内容(除非您提交该提交进入该存储库某处,之后它将仅在任何分支上把它放入)。但是,正如@MadPhysicist 所说,也许还有另一个提交“一样好或更好”犯罪。
  • 你是如何确定提交哈希的?

标签: git github git-commit github-cli


【解决方案1】:

你是怎么合并的? “没有这样的提交”让我相信你“合并”了那个分支。在这种情况下,你就不走运了。提交消失了,您无法知道它被压缩到哪个提交中。

如果您执行了“真正的”合并(创建具有 2 个以上父级的合并提交)或快进合并,那么git branch --contains commit_id 是解决此问题的正确方法。

确保在运行命令之前已获取远程历史记录。

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2021-09-30
    • 2014-08-23
    • 2017-03-25
    • 2016-05-07
    • 2017-08-06
    • 2023-04-03
    • 2015-01-31
    相关资源
    最近更新 更多