Git日志条目重复显示,但具有不同的提交ID。

3

我的 git log 显示如下。

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是相同的,每个提交之间没有区别。那么有没有办法去除这些重复项呢?


3
使用 git log --decorate --oneline --graph 命令来绘制提交记录的图形化表示。添加 --all 参数可以让 Git 从所有标签(分支名称、标签名称等)开始。这些重复的存在可能有某种原因,或者可能是您不小心创建了重复(尽管这很少见,Git 通常不允许这样做)。 - torek
你的意思是 git diff 3c61cc9 dcf34cd 是空的吗? - Jona
Jona,不,我已经编辑了问题。 - user4948798
你确定这不是 git diff 3c61cc9..dcf34cd 吗? - msanford
1个回答

0

假设您喜欢您的3c61cc9821cfe8的外观,只需执行以下操作:

git reset 821cfe8

然后,这两个顶部的提交将被“删除”,你的历史记录中只剩下ACDB

但是,如果您希望通过删除821cfe812721a1使您的历史记录变为ABCD (取决于您如何进入当前状态,是否已推送所有这些提交以及您团队的协作规则),您可以尝试像这样重建您的历史记录:

  1. 检出您关心的最近提交 - 在 12721a1 之前的任何提交
  2. 挑选每个要添加的新提交
  3. 重置您的分支指向新的“最新”提交

E.g.:

$ git checkout <commit right before 12721a1> 
$ git cherry-pick 0987a57 # (commit D)
$ git cherry-pick 7a5a58f # (commit C)
$ git cherry-pick dcf34cd # (commit B)
$ git cherry-pick 3c61cc9 # (commit A)
$ git checkout <branch>
$ get reset <commit you switched to 2 steps ago>

注意:这些操作并不真正“删除”提交记录,只是将它们从该分支的历史记录中移除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接