Cloning репозиторий, не делая его источником удаленного
Я клонирую репозиторий git с компьютера, который будет протер.
Можно ли клонировать репозиторий без создания исходного репозитория origin/master
? Или мне нужно клонировать его, а затем удалить удаленную ветвь (которая выполняется с помощью git remote rm origin
)?
Изменить. В репозитории имеется только одна ветка и нет тегов.
Ответы
Ответ 1
Нет необходимости делать исходный репозиторий удаленным пулом "origin" для клонирования основной ветки.
На новом компьютере создайте новый репозиторий:
git init foo
Затем вытащите старый репозиторий в новый, не создавая пульт:
cd foo
git pull <reference to old repository>
Однако следует отметить, что самый простой способ сэкономить репозиторий - просто запереть каталог репозитория и переместить файлы на новый компьютер. Это сохранит все и все пульты, теги и т.д.
Как указано ниже, при копировании репозитория будьте осторожны при переходе от файловых систем, чувствительных к регистру (например, Linux, Mac, NTFS), к нечувствительным к регистру (например, Fat32).
Ответ 2
Во-первых, вы можете использовать опцию --origin <name>
git clone
- origin <name> , -o <name>
Вместо того, чтобы использовать удаленное имя происхождение, чтобы отслеживать восходящий репозиторий, используйте < имя > .
Во-вторых, вы можете использовать git remote add
добавить репозиторий для извлечения из существующего репозитория (так что вы можете использовать git init
, затем git remote add <name> <url>
).
Если вы хотите создать зеркало репозитория, refs/heads/*
переходит в refs/heads/*
в клоне, вы можете init
репозиторий, установить соответствующий refspec, а затем fetch
...
Или вы можете использовать git clone --mirror
, который должен отвечать на текущую версию вопроса OP.
Это, однако, не сохранит конфигурацию (в том числе пульты), состояние worktree, reflogs и т.д. Для этого вам нужно будет скопировать репозиторий целиком, как Джесс Бауэрс сказал.
Ответ 3
Общий способ обработки такого перехода - git bundle
. См. Резервное копирование репликации github.
С вашего второго (нового) рабочего стола:
git bundle create file:///\\oldDesktop/share/myGitRepo --all
создать один локальный файл, из которого вы сможете клонировать локальный репозиторий git.
Примечание. протокол file:///
будет поддерживать UNC-путь к Windows (Universal Naming Convention), а остальная часть пути использует '/
' вместо '\
. См. Git на Windows Lan.
Ответ 4
Я считаю, что вам нужно будет удалить удаленную ветку.
Ответ 5
У удаленного репо больше ветвей, чем у мастера? Это сложнее, если это так; вам также нужно сделать локальные копии всех ветвей, потому что, когда вы удаляете пульт дистанционного управления, все ветки удаленного/происхождения исчезнут. (Я просто попробовал!)
Итак, вы можете сделать что-то вроде этого:
git clone <remote_url>
cd <repo>
for b in $(git branch -r | grep -v HEAD | grep -v master);do
git branch $(basename $b) $b
done
git remote rm origin
Конечно, как сказала Джесс Бауэрс, еще проще просто деформировать или закрепить его и переместить файлы, если у вас есть доступ к машине, чтобы сделать это.
Вы также можете просто сделать голой клон:
git clone --bare <remote_url>
а затем сделать из него новые клоны.