代码之家  ›  专栏  ›  技术社区  ›  bopapa_1979

如何在给定的合并提交之前查找分支上的最后一次提交

git
  •  0
  • bopapa_1979  · 技术社区  · 6 年前

    我有一个分支,develop,几天前使用commit hash合并到它 92DD09B型 .

    为了清晰起见,下面是我在Git扩展中提交的图像: enter image description here

    考虑到这个散列,我需要在合并之前在开发分支上找到先前的提交。我该怎么做呢?

    如果我检查了提交散列,Git日志将显示我的分支上的前一次提交,而不是在开发中。

    我看过这个 this question ,然后我签出合并哈希( 92DD09B型 )运行以下命令:
    Git日志头@1-1

    但我得到一个错误: 致命:参数'head@'不明确:未知修订或路径不在工作树中。

    我在用Git做窗口。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Mark Adelsberger    6 年前

    根据评论,我好像误解了你关于什么承诺的问题 92dd09b 标识。我将原始答案保留在下面,以避免让评论对话变得更加混乱。但根据我目前的理解,你确实

                                  ... x
                                       \
    x -- x -- x -- A -- 92dd09b -- x -- M2 -- x <--(develop)
                       /
             ... x -- B <--(branch)
    

    在这种情况下,您首先尝试的是(结账 92DD09B型 ,run git log)应该显示来自两个分支的提交;您可以通过说

    git log --first-parent
    

    或者,根据博士的回答,你可以说

    git show 92dd09b~
    

    (除其他外)。

    但是,您的评论表明,这并不能使您正确地提交,这意味着某些东西被错误地观察到。


    据我所知,你有一个发展分支

    x -- x -- x -- A <--(develop)
    

    你还有一个分支

    x -- x -- x -- A <--(develop)
    
       ... x -- 92dd09b <--(branch)
    

    你合并了 92DD09B型 进入之内 develop

    x -- x -- x -- A -- M1 <--(develop)
                       /
       ... x -- 92dd09b <--(branch)
    

    现在也许还有更多的工作要做

                            ... x
                                 \
    x -- x -- x -- A -- M1 -- x -- M2 -- x <--(develop)
                       /
       ... x -- 92dd09b <--(branch)
    

    所以现在你想找到 A .

    通常来说,提交使“及时回顾”变得容易,而不容易展望。如果你从 92DD09B型 你必须“向前看”才能 M1 然后 回首往事 .

    所以这并不像你希望的那么容易。但这是可以做到的。你可以从

    git log --merges --format=%p develop
    

    这将为中的每个合并提交提供父列表 发展 ,每行一个。所以你可以用任何方式过滤它。

    git log --merges --format=%p develop |grep 92dd09b$ |cut -d" " -f1
    

    应打印的“其他”父级的缩写哈希 M1 ,应该是 . (假设它不是章鱼合并,假设你合并了92DD09B 进入之内 发展 而不是反过来。)

        2
  •  0
  •   phd    6 年前

    首先,您不需要签出合并,所以让我们回到开发阶段:

    git checkout develop
    

    要从已知哈希获取上一次提交,请执行以下操作:

    git show 92dd09b~
    

    有许多不同的方法可以在历史记录中导航,将一个提交命名为另一个提交: https://git-scm.com/docs/gitrevisions