出于某种原因,我必须为中央仓库创建一个镜像仓库。
central repo< ----->镜子回购< -----> dev repo
风险是推入镜像回购可能会覆盖中央回购的历史。
如果有人(J先生)将新提交(commit_X)推送到中央仓库,同时镜像将在没有提取的情况下推送,那么此推送将覆盖中央仓库的历史记录。因此,commit_X将被删除。
J先生需要再次拉动,合并并推送他的commit_X。
根本原因是如果使用clone --mirror
创建了回购,push
默认情况下会隐式使用--mirror
,即使它未在push
之后添加。
我知道可以在centrol repo端安装一个钩子脚本来禁用push --mirror
。
但有没有办法在镜像回购方面禁用它?
[EDIT1] 添加了一个插图,可帮助您理解此问题。
答案 0 :(得分:0)
只需修改.git/config
并取消设置remote.<remote>.mirror
,如git help push
中所述:
<强> - 镜强>
而不是将每个引用命名为push,指定将refs /下的所有引用(包括但不限于refs / heads /,refs / remotes /和refs / tags /)镜像到远程存储库。新创建的本地引用将被推送到远程端,本地更新的引用将在远程端强制更新,并且已删除的引用将从远程端删除。如果设置了配置选项remote..mirror,则这是缺省值。