我正在管理一个代码项目。该代码的开发人员大多数是研究生,其中许多是Git的新手。在很多情况下,学生不小心将大文件(例如模拟结果)添加到存储库中并推送到GitHub,从而导致存储库大小增加。显然,长期的解决方案是更好地教育.gitignore文件的使用方法和Git的良好实践;但是,仍然仍然需要一个万无一失的系统。
所以我的问题是:在将所有新提交添加到远程存储库之前,是否有办法对其进行质量检查(或至少设置大小限制)?
(注意:我已经有受保护的分支,要求学生提交合并请求。这可以防止学生破坏代码,但不能阻止添加大文件。)
答案 0 :(得分:1)
在这种情况下可用的选项如下:
作为已执行的操作,您可以使用请求请求保护主分支。而且,您还可以防止将大文件添加到提交历史记录中。防止将大文件添加到提交历史记录中的详细步骤,如下所示:
devlop
分支合并到master
分支中,并且在develop
分支中提交了大文件。develop
分支中提交或在master分支中添加.gitignore
来忽略需要从develop
分支合并的文件,查看删除请求以删除大文件。将拉取请求与壁球策略合并,以便仅基于master
分支重新提交一次提交,而没有大文件。
合并后删除develop
分支。
那么大文件将不会添加到您的git repo中。
由于服务器端挂钩不可用(如max630所述),您可以使用客户端挂钩来检查提交或推送。
例如,您可以使用 pre-push
钩子检查要加载的大小或文件。
缺点是创建新的本地存储库时,默认情况下未配置git钩子。
您可以使用git filter-branche
命令在一段时间内重写github存储库的提交历史记录。
例如通过以下方式从所有提交历史记录中删除test.zip
文件:
git filter-branch --index-filter 'git rm --ignore-unmatch --cached -r test.zip --prune-empty -f -- --all