为了从GIT存储库中删除大文件,我们必须使用BFG更改公共历史记录。历史更改后强制git克隆
这意味着所有开发人员都应该再次从头开始克隆它,以避免推动以前历史记录的更改。
有没有办法阻止推动开发商回购与非新鲜回购?
为了从GIT存储库中删除大文件,我们必须使用BFG更改公共历史记录。历史更改后强制git克隆
这意味着所有开发人员都应该再次从头开始克隆它,以避免推动以前历史记录的更改。
有没有办法阻止推动开发商回购与非新鲜回购?
由于没有提供足够的细节,我只会给出一个可能的解决方案。
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
我猜想,任何推动将被迫推动,因为历史改变。如果这是真的,你可以使用solution mentioned here阻止所有的推力。它涉及在中央存储库上设置一些配置值。
其实我试图从预重写仓库中拉出来,并推出了一堆“保持”参考,没有错误。我想这不是无害的,但我更喜欢更清洁的解决方案 – Bertrand
Developpers不应该克隆,他们只可以使用武力拉:'混帐拉-f'或'的git拉出身+主'。 – phd