【发布时间】:2018-08-30 10:02:33
【问题描述】:
我们的 GitHub 公共存储库 lyrgard/ffbeEquip 存在问题,我是其中的重要贡献者。
最近,主要维护者和开发者 Lyrgard 意识到他的工作电子邮件地址被用于一些提交信息。
因此,他关注this helpful Github script 将所有工作电子邮件替换为个人电子邮件。因此,git 的历史被完全改写了。我们知道当然这不是一件容易的事。但他不能冒险让他的工作地址与他的爱好项目相关联。
但是,问题是现在我们有多个过去的提交。甚至我的提交也显示了两次!
Github script 没有说明任何内容。我们试图在网上搜索答案,但找不到任何有用的东西。我们不是 git 专家,我相信你现在已经理解了。
我们实际尝试过的:
我们真的很想了解发生了什么,目前的情况是什么,以及我们如何解决它。
非常感谢您的帮助。
[第一次编辑以添加详细信息]
这是 master 上的 git log 输出:
commit b2d98cb6674b0a9d2c457cdcf5bf7dc1271d87c5 (HEAD -> master, origin/master)
Author: Lyrgard <lyrgard@gmail.com>
Date: Thu Aug 30 06:55:43 2018 +0200
added Golden Apple to recently released items
commit 850244a19880ddcbc0637a17ab01241d6ef0133a
Merge: 362d9a14 ef8c6e12
Author: Lyrgard <lyrgard@gmail.com>
Date: Thu Aug 30 06:53:18 2018 +0200
Merge branch 'master' of https://github.com/lyrgard/ffbeEquip
commit 362d9a1409470bd498e5787daa7817400aedd5f1
Merge: 99618a7e 1bca87ad
Author: Lyrgard <lyrgard@gmail.com>
Date: Wed Aug 29 23:04:46 2018 +0200
Merge branch 'Indigo744-encyclopedia_killers'
commit ef8c6e125e6d76d04a0fe28e74fce5439bc4f9f2
Merge: 09722cee 8c1b8394
Author: Lyrgard <lyrgard@gmail.com>
Date: Wed Aug 29 23:04:46 2018 +0200
Merge branch 'Indigo744-encyclopedia_killers'
commit 1bca87ad243079e0df0599a8e8e414b75b580f68
Merge: 99618a7e 4ce21f1e
Author: Lyrgard <lyrgard@gmail.com>
Date: Wed Aug 29 23:02:28 2018 +0200
Merge branch 'encyclopedia_killers' of https://github.com/Indigo744/ffbeEquip into Indigo744-encyclopedia_killers
commit 8c1b83944ade8dbc1eaf1576df00c8e4c46a051b
Merge: 09722cee 5fc10187
Author: Lyrgard <lyrgard@gmail.com>
Date: Wed Aug 29 23:02:28 2018 +0200
Merge branch 'encyclopedia_killers' of https://github.com/Indigo744/ffbeEquip into Indigo744-encyclopedia_killers
如你所见,有两个Merge branch 'Indigo744-encyclopedia_killers'和两个Merge branch 'encyclopedia_killers' of...
当然,commit sha 是不相等的(否则我认为会有很大的问题)但我不明白为什么会有多个 commit?
[第二次编辑以添加更多关于发生了什么的细节]
在与 cmets 中的@matthiasbe 讨论后,仔细查看 git 分支(并与 Lyrgard 讨论),这里实际发生了什么:
- 他将 repo 克隆到一个干净的 temp 中
- 他在这个 repo 上使用 github 脚本
filter-branch重写历史记录 - 他将全新的历史推送到 GitHub。
- 删除临时存储库。 现在,一切都很好
- 去睡觉了。第二天早上,去他常用的 repo,从 Github 中提取更改
- 稍作修改,提交并推送到 Github。 这实际上是它不再好的地方
现在 GH 有两个历史记录(旧的和新的),因为在第二个(通常的)回购中,他应该有 rebase 或删除并克隆一个新的。
现在我们知道发生了什么,我们需要能够从历史记录中恢复此合并
我正在查看rebase -i 命令,但找不到任何合并提交。更多帮助将不胜感激。
【问题讨论】:
-
the issue is that now we have multiple past commits我不明白这怎么可能,抱歉。你有什么主意吗 ?您的git log命令是否有几个相同的过去提交? -
好吧,看看这里:github.com/lyrgard/ffbeEquip/commits/master 你会看到的。我可能会在帖子中添加更多详细信息
-
根据您使用的脚本页面上给出的note,每个协作者都必须按原样拉取repo,而无需合并或推送您的本地更改。对我来说,这可能来自某人拉/推旧历史,而它是由脚本重写的。这是我的解释,它无助于解决它:p
-
见this thread我认为他们和你有同样的问题并得出了同样的结论
-
我认为你可能是对的。似乎罪魁祸首是this commit,Lyrgard 将一个主分支合并到...本身?这就是历史开始被复制的地方......
标签: git github open-source git-filter-branch