备份 git 存储库中的所有分支,保留已重新定位和强制的内容

2024-03-24

我正在寻找一种解决方案来备份多个共享 git 存储库,每个存储库都有多个分支,并且某些分支会被重新设置基址并被强制(我知道这违反了最佳实践,但这是我现在必须处理的事情)

我在想一个简单的git clone --mirror然后定期git remote update就足够了,但这不会保留任何通过推力重新定位的东西。

我尝试过git bundle我认为这对于我在这里尝试做的事情来说不是一个好的解决方案。

寻找增量的、轻便的、易于使用的恢复工具,我想也许git format-patch可用于编写记录任何地方发生的每个新提交的脚本。这对于任务来说是否太过分了?


我觉得clone --mirror方法值得回顾。如果您想恢复被强制推送的分支的过去位置,只需查看 reflogs 即可。为了绝对确定这一点,您可以设置gc.pruneExpire to never,同样对于gc.reflogExpireUnreachable,这样引用日志和无法访问的对象将永远不会被删除。这应该涵盖你。重要提示:默认情况下,裸存储库中的引用日志是禁用的。您可以通过设置来启用它们core.logAllRefUpdates.

请注意,推送到的存储库中的引用日志将包含发生的任何强制推送的记录。如果您想更加确定这一点,您甚至可以编写一个更新挂钩来检测传入的强制更新并将它们记录在特殊的地方,也许通过创建一个引用,例如refs/backups/mybranch-{n}.

事实上,一些分支经常被重新设置基础并没有什么问题,只要它是以一种明确定义的方式进行的,这样就不会让人措手不及。这pugit.git 中的分支就是一个完美的例子。

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

备份 git 存储库中的所有分支,保留已重新定位和强制的内容 的相关文章

随机推荐