Почему для новой ветки нет удаленных /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 обнаруживать ветки:
- Определите спецификации веток на вашем сервере P4, которые позволяют git-p4 определять возможные перераспределения в структуре каталогов.
- использование
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, используя обнаружение ветвлений и конфигурации, которые я описал выше.