Git日志条目显示两次,但使用不同的提交id

Git日志条目显示两次,但使用不同的提交id,git,Git,我的git日志如下所示 3c61cc9 Commit A dcf34cd Commit B 821cfe8 Commit A 7a5a58f Commit C 0987a57 Commit D 12721a1 Commit B 这里A&B每个都以不同的提交ID出现两次,而且git diff 3c61cc9 821cfe8是相同的,每个提交之间没有区别。那么有没有办法删除这些重复项呢?假设您喜欢您的3c61cc9和821cfe8外观,就这么做吧 git reset 821cfe8 然后,前两个

我的
git日志
如下所示

3c61cc9 Commit A
dcf34cd Commit B
821cfe8 Commit A
7a5a58f Commit C
0987a57 Commit D
12721a1 Commit B

这里
A&B
每个都以不同的提交ID出现两次,而且
git diff 3c61cc9 821cfe8
是相同的,每个提交之间没有区别。那么有没有办法删除这些重复项呢?

假设您喜欢您的
3c61cc9
821cfe8
外观,就这么做吧

git reset 821cfe8
然后,前两个提交将被“删除”。而您的历史记录中只有
ACDB

但是,如果您希望通过删除
821cfe8
12721a1
(取决于您进入当前状态的方式、是否已推送所有这些提交以及您的团队协作规则)您可以尝试如下方式重建历史记录:

  • 签出您关心的最新提交-12721a1之前的任何内容
  • cherry选择要添加的每个新提交
  • 重置分支以指向新的“最新”提交
  • 例如:

    $git签出
    $git cherry pick 0987a57#(提交D)
    $git cherry pick 7a5a58f#(提交C)
    $git cherry pick dcf34cd#(提交B)
    $git cherry pick 3c61cc9#(提交A)
    $git结帐
    $get重置
    

    注意:从技术上讲,所有这些都不会“删除”提交,而只是将它们从该分支的历史记录中删除。

    使用
    git log--decoration--oneline--graph
    绘制提交的图形表示。添加
    --all
    ,使Git从所有标签(分支名称、标记名称等)开始。这些复制品的存在可能是有原因的,或者可能你只是以某种方式进行了复制(这是可能的,但Git通常不允许你这么做)。你是说
    Git diff 3c61cc9 dcf34cd
    是空的吗?Jona,我没有编辑过这个问题。确定那不是
    Git diff 3c61cc9..dcf34cd