Почему Gerrit не может самостоятельно создать ветвь?

После этого ответа и мой собственный вопрос, у меня есть простой (надеюсь, что) вопрос.

Если я нажимаю конкретную ветвь, все необходимые refs правильно устанавливаются:

git checkout 82-blah-blah
git push origin HEAD:refs/for/82-blah-blah

Почему я всегда получаю:

! [remote rejected] HEAD -> refs/for/82-blah-blah (branch 82-blah-blah not found)

и мне всегда нужно перейти к Gerrit UI и создать эту ветку вручную?

Разве это не очевидный шаг, который Геррит мог просто автоматизировать? Или я чего-то не хватает?

Ответ 2

Принятый ответ относится к функции, которая позволяет пользователям создавать ветвление с использованием SSH, все, что она добавляет, это CreateBranchCommand. Исходный запрос может действительно ссылаться на то, что хочет @trejder, но реализация - это просто ветка создания через команду SSH.

У меня создалось впечатление, что если у вас есть право на создание ссылки, вы можете нажать на ref/for/new-branch, но я ошибся, просто протестировал его, и он не работает. Он позволяет создавать новые ветки, но напрямую нажимать на них.

Угадайте, как быстро сделать это:

git checkout master
git push origin HEAD:new-branch
git checkout new-branch
git push origin HEAD:/refs/for/new-branch

Ответ 3

Предположим, что новая ветка "myNewBranch"

git checkout master
git push origin HEAD:myNewBranch

После внесения некоторых изменений нажать новый фиксатор:

git push origin myNewBranch

Работает для меня. Но..

Не знаю, почему нельзя толкать одну и ту же фиксацию после этого и наоборот - если я открыл PR для просмотра в master, не могу нажать ту же фиксацию на "myNewBranch" . Чтобы сделать это, пришлось отказаться от PR, чтобы овладеть, а затем вишня - выбрать фиксацию для новой локальной ветки, а затем нажать на удаленный "myNewBranch"

Удачи!

Ответ 4

Используйте этот простой скрипт bash, чтобы создать и передать новую ветвь в gerrit. Использование: Branch_name и CommitId необходимы 2 входа

!/Bin/Баш

прочитайте -p "Введите имя новой ветки:" Имя_учетки прочитайте -p "Введите CommitID:" Идентификатор git CommitID --all git branch $ Branch_Name $ CommitID начало источника git $ Branch_Name: $ Branch_Name git checkout $ Branch_Name git branch --set -upstream-to = origin/$ Branch_Name $ Branch_Name