Nano Hash - криптовалюты, майнинг, программирование

Как объединить ветку Gerrit с другой веткой Gerrit

Я использую Gerrit версии 2.4.2. У меня есть ветка master, и я создал новую ветку под названием newbranch. Затем я внес некоторые изменения в удаленный (Геррит) newbranch. После проверки в Gerrit я объединил изменения в newbranch.

Нет, я хочу объединить newbranch с master, отправить обновления master (объединенные с изменениями из newbranch) и удалить ветку newbranch.

Я пытался сделать это:

git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master

Но Геррит возвращает это сообщение:

 ! [remote rejected] master -> refs/for/master (no new changes)

Что я должен делать?

11.10.2012

Ответы:


1

Эта ситуация была отмечена как ошибка в Gerrit. Вот решение/обходной путь из системы отслеживания ошибок Gerrit:

Насколько мне известно, в настоящее время у вас есть 2 варианта -

  1. Форс-пуш для рефов/голов. Это просто ускоренная перемотка, так что теоретически все уже просмотрено и проверено. Нет смысла делать это снова, так что просто пропустите этот процесс и нажимайте на refs/heads, а не refs/for.

  2. Идите вперед и создайте фиксацию слияния. Используйте 'git merge --no-ff' - это создаст фиксацию слияния, даже если в вашей ситуации с быстрой перемоткой в ​​этом нет необходимости. Затем фиксация слияния может быть загружена, просмотрена, проверена и объединена, как обычно.

Моя компания склоняется к варианту 2. Я закрою это как wontfix, но если у вас есть какие-либо предложения о том, как это сделать лучше, сообщите нам об этом.

11.10.2012

2

Если слияние представляет собой ускоренное слияние, не существует объекта, который можно было бы отправить в gerrit, поскольку ускоренная перемотка вперед просто перемещает указатель ветвления.

Вам нужно заставить слияние создать объект, избегая быстрой перемотки вперед:

git merge --no-ff
23.06.2014

3

Следующие команды работают отлично.

git checkout master
git merge --no-ff newbranch

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

git commit --amend

Затем нажмите с помощью следующей команды.

git push origin HEAD:refs/for/refs/heads/master

Вы можете столкнуться с сообщением об ошибке, как показано ниже.

! [remote rejected] HEAD -> refs/for/refs/heads/master (you are not allowed to upload merges)

Чтобы решить эту проблему, администратор проекта gerrit должен создать еще одну ссылку в gerrit с именем «refs/for/refs/heads/master» или «refs/for/refs/heads/*» (которая в будущем будет охватывать все ветки). Затем предоставьте разрешение «Push Merge Commit» для этой ссылки и разрешение «Submit», если требуется для отправки GCR.

Теперь попробуйте выполнить указанную выше команду push еще раз, и она должна сработать.

Кредиты:

https://github.com/ReviewAssistant/reviewassistant/wiki/Merging-branches-in-Gerrit

https://stackoverflow.com/a/21199818/3877642

05.04.2019
  • Странно, но в моем случае git merge --no-ff не работает, а git merge --no-ff branchName работает хорошо 11.09.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..