为了从GIT存储库中删除大文件,我们必须使用BFG更改公共历史记录。
这意味着所有开发人员都应该从头开始克隆它,以避免推动以前的历史记录。
有没有办法用非新鲜的回购来阻止开发商回购的推动?
答案 0 :(得分:1)
由于没有提供足够的细节,我只想给出一个可能的解决方案。
pre-receive
挂钩。在这个钩子中,你可以获得推动分支的尖端。如果可以从推送的分支中访问最早的提交,则阻止推送和回显为什么推送失败以及如何解决错误。例如,如果旧分支为A-B-C-D-E-F
且新分支为A-B-C-M-N-O
,则D
是最早的提交。如果新内容为A'-B'-C'-D'-E'-F'
,则A
是最早的。
在pre-receive
钩子中,你可以得到这样的提示:
#!/bin/bash
OLDEST=xxxx
while read old new name;do
#$new is the tip of the pushed branch
if git merge-base --is-ancestor $OLDEST $new;then
echo "Error: you are pushing commits with the old history."
echo "Error: please clone the repository with the new history."
exit 1
fi
done
答案 1 :(得分:0)
我猜测,自历史发生变化以来,任何推动都会被迫推动。如果这是真的,你可以使用solution mentioned here来阻止所有的推力。它涉及在中央存储库上设置一些配置值。