防止用户将膨胀的git提交推送到中央存储库
我正在管理一个代码项目。代码的大多数开发人员都是研究生,其中许多是Git的新手。在很多情况下,学生会意外地将大型文件(如模拟结果)添加到存储库并推送到GitHub,导致repo的大小增加。显然,长期的解决方案是更好地教育如何使用.Git文件和良好的Git实践;然而,一个万无一失的系统显然仍然是必要的 因此,我的问题是:在将所有新提交添加到远程存储库之前,是否有方法对其进行质量检查(或至少设置大小限制)?防止用户将膨胀的git提交推送到中央存储库,git,github,version-control,Git,Github,Version Control,我正在管理一个代码项目。代码的大多数开发人员都是研究生,其中许多是Git的新手。在很多情况下,学生会意外地将大型文件(如模拟结果)添加到存储库并推送到GitHub,导致repo的大小增加。显然,长期的解决方案是更好地教育如何使用.Git文件和良好的Git实践;然而,一个万无一失的系统显然仍然是必要的 因此,我的问题是:在将所有新提交添加到远程存储库之前,是否有方法对其进行质量检查(或至少设置大小限制)? (注意:我已经有受保护的分支,并要求学生提交合并请求。这可以防止学生破坏代码,但不会阻止添加
(注意:我已经有受保护的分支,并要求学生提交合并请求。这可以防止学生破坏代码,但不会阻止添加大文件。)此情况下可用的选项如下: 1.设置分支策略以保护主分支 由于您已经采取了操作,因此可以使用pull reuqest保护主分支。您还可以防止将大型文件添加到提交历史记录中。详细说明防止在提交历史记录中添加大文件的步骤,如下所示:
- 假设有一个将
branach合并到devlop
分支的请求,并且在master
分支中提交了大型文件develop
- 通过在
分支中提交或在主分支中添加develope
来查看删除大文件的拉取请求,以忽略需要从.gitignore
分支合并的文件develope
- 将拉取请求与挤压策略合并,以便在
分支上仅重新基于一个提交,而不使用大文件master
- 合并后删除
分支development
预推
钩子检查要虚拟化的大小或文件
缺点是当创建新的本地回购时,默认情况下不会配置git挂钩
3.重写提交历史记录以删除大文件
您可以通过git filter branche
命令重写github repo的提交历史记录一段时间
例如,通过以下方式从所有提交历史记录中删除test.zip
文件:
git filter-branch --index-filter 'git rm --ignore-unmatch --cached -r test.zip --prune-empty -f -- --all
是的,有,但是官方的方式(使用预接收或更新脚本)需要能够管理服务器,这在github的情况下是不可能的。谢谢Marina。我没有想过使用挤压合并-这似乎是目前最好的解决方案。