【问题标题】:Alternatives to git filter-branch when purging a file from Git history?从 Git 历史记录中清除文件时 git filter-branch 的替代方案?
【发布时间】: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 存储库上工作的每个人都需要将他们迄今为止的所有工作推到 Bitbucket。然后我会进行清洗。 ​然后,一旦我完成了,他们可能不得不删除他们的整个本地克隆,然后重新获取它​。如果他们在此期间做任何工作,他们将不得不在新历史之上重新应用他们的提交。

问题:

有没有我没有考虑的替代方案? 我能否以某种方式从较新的 repo 的历史记录中清除有问题的文件,同时仍然保持从一个 repo 轻松合并到另一个 repo 的能力?

【问题讨论】:

    标签: git github bitbucket


    【解决方案1】:

    简短回答:没有

    原因是每个 Git 引用都由一个 SHA1 哈希标识,该哈希相对于(除其他外)其内容是唯一的。

    要删除该文件,您需要重写提交,这需要强制推送。

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 2022-08-20
      • 2014-06-19
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      相关资源
      最近更新 更多