0

基本上,我要做的是摆脱提交 5581ecb023a9,它是在两个分支的合并过程中创建的。我想要做到的是一切都在一条直线上。

到目前为止,我已经尝试git rebase -i 5581ecb023a9按照以前的一些帖子进行操作,尽管它没有显示实际的 5581ecb023a9 提交。我试过git rebase -i a19ba5850a20了,它也没有显示 5581ecb023a9 提交。

关于如何将它们全部排成一行的任何想法?

提前致谢。

4

2 回答 2

0

您可以从逻辑上将提交放在一行中,但这样做会重写历史记录

这意味着提交将具有不同的 id(SHA1 校验和),因为 git 中的每个修订都在校验和中包含它们的父 id。这就是使 git 密码学安全的原因(很容易验证从任何快照到根提交的整个存储库的完整性)。

要比较包含相同“逻辑”提交但重新定位或挑选到另一个的分支,请执行例如

log --left-right --graph --oneline --cherry-pick BRANCH1 BRANCH2

正如 git rev-list (以及其他)的手册页所解释的那样,--cherry-pick原因

--樱桃采摘

    Omit any commit that introduces the same change as another commit on
    the "other side" when the set of commits are limited with symmetric
    difference.

    For example, if you have two branches, A and B, a usual way to list all
    commits on only one side of them is with --left-right (see the example
    below in the description of the --left-right option). It however shows
    the commits that were cherry-picked from the other branch (for example,
    "3rd on b" may be cherry-picked from branch A).

    With this option, such pairs of commits are excluded from the output.
于 2012-07-12T21:56:49.613 回答
0

为此,您需要针对合并的任一侧与其共同祖先分歧之前的提交进行变基 - 例如git rebse 8fedb6

于 2012-07-12T23:18:04.543 回答