gpt4 book ai didi

git - 如何收缩/剪切 Git 仓库

转载 作者:太空狗 更新时间:2023-10-29 13:10:22 24 4
gpt4 key购买 nike

我们有一个 Git 存储库,其中有 7 名贡献开发人员,拥有超过 2.5 年的历史和大约 10,000 次提交。我们使用 Assembla 进行推 pull 。当我们添加新开发人员时,将存储库克隆到他们的开发计算机需要将近一个小时。

我不确定这是否是正确的术语,但我们的目标是通过“切断/剪断”前 1.5 年的提交并仅保留最近一年的历史记录来“缩小” repo 协议(protocol)。我们想保留整个仓库的“备份”副本,无论是作为单独的仓库还是分支?我们想在将来重复这一点,可能会在需要时将初始拆分与新拆分 merge ,但我不确定这是否可能。如果有一种方法可以将所有历史记录放在一个单独的分支上,并且只保留 master 分支仅包含去年的历史记录,那就太好了,但是让我知道可能的利弊.

我不知道我们拥有的所有可能性/选项,这就是我来这里的原因。我读了一些关于 patches 的内容,但我不确定这是否真的是我需要的,或者是否有更好/更简单的东西。你们正在做什么来处理这样的问题,包括利弊?请记住,我仍然需要每个开发人员继续推 pull ,最好留在 master 分支上。

提前致谢!

最佳答案

最好的分步说明可以在 Git SCM 历史博文中找到 "Replace Kicker"或 Git 书中关于 "Replace" 的章节.

简短的总结是这样的:

  • 在要剪切的位置创建一个新分支,比如 git branch history hash
  • 将历史推送到新的存储库。
  • 使用 git commit-tree 创建一个新的基础。
  • 将您的后历史 提交重新定位到您的新基础上。
  • 将新截断的 master 分支推送到服务器。
  • 然后人们可以使用 git replace 将历史重新连接在一起。

原始帖子用图片解释得更好。

在处理涉及 merge 的复杂历史时,这可能效果不佳,具体取决于 git rebase --onto--preserve-merges 的配合情况。在继续之前,您显然应该测试好。

关于git - 如何收缩/剪切 Git 仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com