Почему для новой ветки нет удаленных /origin/HEAD -> origin/master, которые я подтолкнул к репо

Я создал ветку git и передал ее мастеру происхождения. Теперь, когда я делаю git branch --all это не показывает мне remotes/origin/HEAD --> origin/master, Я в состоянии выполнить все операции Git, хотя.

  • Это ожидается?
  • Какая логика в том, чтобы иметь / не иметь эту запись?

Редактировать:

Похоже, в том, что я на самом деле сделал, есть путаница. Я импортировал репо из p4 Вот последовательность:

 1. git init 
 2. ../git/git-p4.py clone --detect-branches //projects/<my_project_path_in_p4>
 3. git checkout -q -b master refs/remotes/p4/<my_project_path>
 4. git add --all
 5. git commit -m "Initial Commit"
 6. git remote add origin <my_git_path>
 7. git push origin master

и затем, когда я делаю git branch - все, что я не вижу этой конкретной записи:

* master
remotes/origin/master
remotes/p4/workflow_manager/workflow_manager-15.3.0

** Второе редактирование:**

Когда я клонирую ту же ветку и делаю git branch --all я получил remotes/origin/HEAD --> origin/master, Вот результат после клонирования, который ожидается

* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

Так что теперь я еще больше запутался:)

2 ответа

Почему remotes/origin/HEAD отсутствует?

Вы могли бы удалить его с вашего компьютера через git remote set-head -d origin, Похоже, ты этого не делал.

Как мне вернуть его обратно?

В любом случае вы можете вернуть его, запустив git remote set-head -a, Это просит пульт дистанционного управления определить его HEAD а затем обновляет ваш местный соответственно.

Отсутствует пульт HEAD ожидается?

Нет, этого не ожидается.

Зачем нам remotes/origin/HEAD?

remotes\origin\HEAD указывает ветку по умолчанию на пульте. Логика в том, что вы можете использовать origin в качестве стенографии, когда бы вы в противном случае использовали origin/master, Например, это делает git log origin/master эквивалентно git log origin,

Смотрите также

https://www.kernel.org/pub/software/scm/git/docs/git-remote.html

Есть два способа заставить git-p4 обнаруживать ветки:

  1. Определите спецификации веток на вашем сервере P4, которые позволяют git-p4 определять возможные перераспределения в структуре каталогов.
  2. использование git config --local git-p4.branchList path/to/branchA:path/to/branchB чтобы определения веток были локальными для вашего git-репозитория.

Правильно выбрать второй вариант иногда сложно, но, следуя вашему примеру, я думаю, что вам следует начать с добавления следующей конфигурации:

git config --local git-p4.branchList workflow_manager/workflow_manager-15.3.0:workflow_manager/workflow_manager-15.3.0

Обратите внимание, что по своему личному опыту я всегда начинал с импорта репозитория P4, в котором уже были ветки. То есть вся работа по инициализации была сделана непосредственно под P4. Я предлагаю вам сделать то же самое. Но учтите, что для правильного определения веток вам необходимо импортировать полную историю, используя @all запись в конце пути к хранилищу P4.

Альтернативой может быть использование временного репозитория git без обнаружения ветвлений для инициализации сервера P4, а затем использование P4 для интеграции / копирования / ветвления из начальной ветки в новую. На этом этапе вы сможете правильно импортировать репозиторий P4 в новый репозиторий git, используя обнаружение ветвлений и конфигурации, которые я описал выше.

Другие вопросы по тегам