Напротив `git push --mirror`? Как мне вернуть мой репо? - PullRequest
6 голосов
/ 06 февраля 2010

У меня большой успех с git push --mirror для создания резервных копий в голое хранилище. Но после поиска на SO и в других местах я не могу найти способ локально клонировать объект с всеми ветвями. Я не хочу использовать git clone, так как не хочу, чтобы мое локальное репо узнало о голый репо Если я использую git pull, это только сбивает ветку HEAD.

Гадание:

git pull /data/Dropbox/backup/that_stuff.git *

конечно, никуда меня не приведет.

Как мне вернуть весь репо со всеми филиалами обратно? Я понимаю, что, возможно, я мог бы просто скопировать репо в мой каталог .git, но это кажется плохой идеей.

Ответы [ 3 ]

2 голосов
/ 06 февраля 2010

Попробуйте git fetch вместо git pull

Поскольку git pull существует для извлечения ветви и ее слияния с локальной веткой, не имеет смысла пытаться объединить все удаленные ветви с локальными ветвями.

$ git fetch a-repo_url

Приведенная выше команда копирует все ветви из удаленного пространства имен refs/heads/ и сохраняет их в локальном пространстве имен refs/remotes/remoteRpo/, , если параметр branch.<name>.fetch не используется для указания ссылки по умолчанию не по умолчанию. .
Попробуйте:

$ git fetch a-repo-url +refs/heads/*:refs/heads/*

может принудительно выбрать все головы для всех ветвей.
Смотрите этот ТАК * вопрос .


ОП Яр сообщает:

git pull /data/Dropbox/backup/mjdj.git/ +refs/heads/*:refs/heads/*

работает.

1 голос
/ 26 декабря 2010

Также есть (сейчас?) Git clone --mirror. Но человек говорит:

   --mirror
       Set up a mirror of the remote repository. This implies --bare.

https://git.wiki.kernel.org/index.php/GitFaq#How_do_I_clone_a_repository_with_all_remotely_tracked_branches.3F описывает, как превратить голое репо в не голое.

0 голосов
/ 26 марта 2015

Этого можно добиться с помощью git-copy .

git copy /data/Dropbox/backup/that_stuff.git that_stuff.git
...