【发布时间】:2015-12-01 10:09:24
【问题描述】:
问题:
我的团队有两个仓库:
- 一个正在积极开发中的 Bitbucket 存储库,具有悠久的提交历史。
- 一个较新的 Github 存储库,由另一个团队开发,大约一个月前创建。出于某种原因,大部分来自 Bitbucket 存储库的文件没有分叉 Bitbucket 存储库,而是被复制并推送到 Github,而没有来自 Bitbucket 的历史记录。
在我们淘汰 Bitbucket 之前,我希望能够将来自 Bitbucket 的更改合并到 Github。我刚刚完成了第一次,所以现在新的 repo 引用了旧 repo 的历史。
在我的机器上合并成功,但我无法将其推送到 Github,因为 Github 不接受大于 100MB 的文件。有趣的是,我不需要这个有问题的大文件,事实上它在我将Bitbucket/develop 合并到Github/develop 之后就被删除了。没关系,它不再出现在 HEAD 中,它在历史中,所以它被推送到 Github。
解决方案?
- 从我们的 Bitbucket 存储库的历史记录中清除有问题的文件 (https://help.github.com/articles/remove-sensitive-data/)。
- 强制推送所有受影响的分支到 Bitbucket。
- 重新运行从 Bitbucket 到 Github 的合并。
这是一个相当冒险的前景。这意味着在旧的 Bitbucket 存储库上工作的每个人都需要将他们迄今为止的所有工作推到 Bitbucket。然后我会进行清洗。 然后,一旦我完成了,他们可能不得不删除他们的整个本地克隆,然后重新获取它。如果他们在此期间做任何工作,他们将不得不在新历史之上重新应用他们的提交。
问题:
有没有我没有考虑的替代方案? 我能否以某种方式从较新的 repo 的历史记录中清除有问题的文件,同时仍然保持从一个 repo 轻松合并到另一个 repo 的能力?
【问题讨论】: