Git 日志条目显示两次但具有不同的提交 ID

标签 git

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

最佳答案

假设您喜欢 3c61cc9821cfe8 的外观,那就这样做

git reset 821cfe8

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

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

  1. 查看您关心的最新提交 - 12721a1 之前的任何提交
  2. 精挑细选您想要添加的每个新提交
  3. 重置您的分支以指向新的“最新”提交

例如:

$ 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 日志条目显示两次但具有不同的提交 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60559316/

相关文章:

git - 如何允许团队成员在 Github 上上传他们对项目特定部分的贡献?

git - 如何自动将 `git commit amend` *附加*到最后的提交消息?

php - 我需要哪些不同的 Git 存储库?

Git:如何 rebase 一个裸仓库

git - 在 Git 中,我可以查看分支 merge 中的所有提交吗?

php - 为什么在 Windows 中可能会尝试删除一个文件两次?

git - 如何在 PhpStorm 中查看所有 git 命令?

git - 从命令行覆盖 .gitattributes

windows - 在 list 列表条目中获取 : no matching manifest for windows/amd64 10. 0.18362

git - 无法将本地 git 分支推送到上游