2009-07-25 3 views
1

У меня возникла странная проблема с моим git repo. В процессе клонирования он теряет все свои головы, кроме хозяина. Разве head не является файловой ссылкой на идентификатор commit? Или он должен быть зарегистрирован в другом месте для клонирования?Исчезающая голова в git repo

Он выглядит точно так же, как описано Уильям Перселл:

cd a 
$ git branch 
    master 
    * test 
$ cd .. 
$ git clone a b 
Initialized empty Git repository in /private/tmp/b/.git/ 
$ cd b 
$ git branch 
    * master 
+1

Пожалуйста, заполните. Когда вы говорите «в процессе клонирования», вы имеете в виду, что источник теряет ветви или что у цели клона нет всех ветвей источников. Кроме того, какие команды вы используете для определения этого? –

+0

Жаль, что неясно. –

+0

Не нужно сожалеть, просто отредактируйте свой вопрос с уточнения деталей, а затем потенциальные ответчики могут помочь с ответами, которые не основаны исключительно на догадках. –

ответ

3

Возможно, вы не нажаты все ваши филиалы в удаленное хранилище. Клонирование удаленного репозитория должно автоматически включать все удаленные ветви.

Обратите внимание, что удаленные ветви автоматически не становятся локальными ветвями. Вы можете использовать команду git branch -a, чтобы увидеть все ветви, которые у вас есть. Пример:

$ git branch -a 
* master 
    remotes/origin/next 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

При том, что мы можем превратить «следующий» удаленный филиал в локальный с git checkout -b и указать удаленный филиал в качестве отправной точки:

$ git co -b next origin/next 
Branch next set up to track remote branch next from origin. 
Switched to a new branch 'next' 

А теперь вы все для работы над «следующим».

1

Я думаю, что что-то не так с вашим и с установкой гита Уильяма Пурселла. Пожалуйста, подумайте о регистрации отчета об ошибке.

Что должен сделать git clone, заключается в том, чтобы скопировать удаленные головки в refs/remotes/origin/*, а затем проверить новую ветку с тем же именем и указать, что выберете как HEAD пульта.

В вашем случае, git branch показывает, что test проверяется на исходном repostiory, так git clone должен создать test филиал в хранилище назначения на основе удаленного test филиала.

Вот что я получаю.

$ cd a 
$ git branch 
    master 
* test 
$ cd .. 
$ git clone a b 
Initialized empty Git repository in /home/charles/src/gittest/b/.git/ 
$ cd b 
$ git branch 
* test 
$ git branch -a 
* test 
    remotes/origin/HEAD -> origin/test 
    remotes/origin/master 
    remotes/origin/test 
$ git config branch.test.remote 
origin 
$ git config branch.test.merge 
refs/heads/test 
Смежные вопросы