我的 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
是相同的,每个提交之间没有区别。那么有没有办法去除这些重复项呢?
我的 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
是相同的,每个提交之间没有区别。那么有没有办法去除这些重复项呢?
假设您喜欢您的3c61cc9
和821cfe8
的外观,只需执行以下操作:
git reset 821cfe8
然后,这两个顶部的提交将被“删除”,你的历史记录中只剩下ACDB
。
但是,如果您希望通过删除821cfe8
和12721a1
使您的历史记录变为ABCD
(取决于您如何进入当前状态,是否已推送所有这些提交以及您团队的协作规则),您可以尝试像这样重建您的历史记录:
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>
git log --decorate --oneline --graph
命令来绘制提交记录的图形化表示。添加--all
参数可以让 Git 从所有标签(分支名称、标签名称等)开始。这些重复的存在可能有某种原因,或者可能是您不小心创建了重复(尽管这很少见,Git 通常不允许这样做)。 - torekgit diff 3c61cc9 dcf34cd
是空的吗? - Jonagit diff 3c61cc9..dcf34cd
吗? - msanford