首页 > 解决方案 > `git remote add --mirror=fetch` 会与 `git clone --mirror` 生成相同的仓库吗?

问题描述

如果我想复制一个 repo,我使用它。

git clone --mirror $SRC $DST

但是这个命令不需要 repo 存在于$DST. 通常没问题,但如果我想从多个进程同时发出 Git 命令,可能会导致一些竞争条件,因为在执行命令之前不存在可锁定的文件对象。

如果我只想跳过存在测试$DST,我想我可以

mkdir -p $DST
cd $DST
git init --bare 
git remote add origin --mirror-=fetch $SRC 2>/dev/null || true
git remote update

这会与完全相同的回购git clone --mirror $SRC $DST吗?

标签: gitconcurrencygit-clonemirrorgit-mirror

解决方案


如果您查看为 a 完成的测试git clone --mirror,您会看到一个镜像克隆是一个:

  • 一个fetchrefspec 设置为+refs/*:refs/*
  • 设置git config --bool remote.origin.mirror为真

如果在您的 git 远程命令之后满足这些条件,那么是的,这将等同于镜像克隆。


推荐阅读