Подтвердить что ты не робот

Cloning репозиторий, не делая его источником удаленного

Я клонирую репозиторий git с компьютера, который будет протер.

Можно ли клонировать репозиторий без создания исходного репозитория origin/master? Или мне нужно клонировать его, а затем удалить удаленную ветвь (которая выполняется с помощью git remote rm origin)?

Изменить. В репозитории имеется только одна ветка и нет тегов.

4b9b3361

Ответ 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>

а затем сделать из него новые клоны.