Git 如何强制贡献者重新克隆存储库?

Git 如何强制贡献者重新克隆存储库?,git,bitbucket,Git,Bitbucket,我们的git存储库由于二进制文件、图像等被意外提交到存储库中而变得非常庞大。回购协议中目前没有大文件,但回购协议的历史记录中有大文件 我的计划是从我们的git历史记录中删除这些大文件,我已经找到了许多很好的资源,因此可以这样做(,) 我的主要问题是,我们的repo(托管在Bitbucket上)有很多贡献者,我担心一旦我从历史记录中删除了大文件,我们的贡献者将将带有大文件的历史记录推回到远程repo中 具体而言,文件规定: 在这一点上,你们已经准备好让每个人抛弃他们的回购协议的旧拷贝,并对新的原始

我们的
git
存储库由于二进制文件、图像等被意外提交到存储库中而变得非常庞大。回购协议中目前没有大文件,但回购协议的历史记录中有大文件

我的计划是从我们的
git
历史记录中删除这些大文件,我已经找到了许多很好的资源,因此可以这样做(,)

我的主要问题是,我们的repo(托管在Bitbucket上)有很多贡献者,我担心一旦我从历史记录中删除了大文件,我们的贡献者将
将带有大文件的历史记录推回到远程repo中

具体而言,文件规定:

在这一点上,你们已经准备好让每个人抛弃他们的回购协议的旧拷贝,并对新的原始数据进行新的克隆。最好删除所有旧克隆,因为它们将有肮脏的历史记录,您不想冒险将其推回到新清理的回购协议中

因此,我的问题有两个:

  • 有没有办法确保从旧的repo克隆中推送不会重新引入大文件
  • 如果没有,是否有办法阻止旧克隆推送,从而要求所有贡献者从新克隆开始

  • 谢谢大家!

    一般来说,对于git,您将在
    源站
    repo上使用预接收挂钩。当收到
    推送
    时,挂钩运行;如果钩子不喜欢推的内容,它会拒绝。因此,您可以编写一个脚本来查找大型对象,或某些文件类型,或您认为最有效地强制执行您的需求的任何内容。请参阅git钩子文档()

    对于bitbucket,来自:

    Bitbucket服务器有两种创建钩子的主要方法

    推荐的方法是使用我们的Java插件开发框架创建插件。尽管强烈反对在Bitbucket服务器实例的文件系统中创建服务器端Git挂钩,但也有可能


    本页将进一步解释他们推荐的设置钩子的方法。

    你所说的“重新克隆”是什么意思?您是否要求您的出资人使用完全不同的回购协议?错误是问题的一部分history@evolutionxbox确切地我需要他们扔掉旧的回购协议,克隆一个新的回购协议,这样他们就不会意外地将他们肮脏的历史推回到我们的远程系统中。@Yanndreonaud是的,但我正试图将它们从历史中删除,因为他们正在使我们的存储库变得巨大!谢谢你的主意!几个问题:1。我认为这不适用于Bitbucket云(我们不使用Bitbucket服务器):。有什么想法吗?2.有没有办法设置一个服务器端钩子来检查历史记录中是否有任何大文件(即,不检查头部,而是实际检查历史记录)?我问这个问题的原因是因为我们担心人们会用我们已经删除的大文件推送肮脏的历史记录。因为我不是bitbucket用户,我不能谈论云与服务器的不同功能。至于你的另一个问题——是的,你可以检查数据的任何元素来决定是否接受它,这可能包括历史,而不仅仅是头部。明白了,这很有意义。谢谢@mark adelsberger!