如何安全地镜像 git 存储库?

2024-03-23

我想通过后台作业镜像一些 git 存储库。git clone --mirror and git remote update不会保留通过强制推送未引用的对象,但我也想保留这些对象以防黑客攻击。有没有什么工具可以执行安全的 git 镜像?


虽然缺少 shell 脚本会很乏味,但如果您有权访问远程存储库,那么您可以执行:

git fsck --lost-found

这将列出未引用的提交,然后您可以为每个提交创建一个分支:

git branch <branch-for-commit> <commit>

此时,没有任何内容是未引用的,并且克隆不会 gc/丢失任何内容。之后,如果您选择,您可以删除分支,如下所示删除分支 https://stackoverflow.com/a/10610669/1286639

像这样:

git fsck --lost-found | \
  grep dangling | \
  awk '{ system ("git branch" " br-" $3 " " $3); }'

保留悬空提交和 blob。然后,在克隆之后,

git branch -a | grep "br-" | xargs git branch -D
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安全地镜像 git 存储库? 的相关文章

随机推荐