Подтвердить что ты не робот

Git/gerrit, push remote отклонено без изменений

Сделал изменения в фиксации, выполнил исправление. Сделайте push, и я получаю сообщение об ошибке:

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

Проверьте идентификатор изменения в сообщении фиксации и его по-прежнему действительный фиксатор.

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

Изменить: это прямое нажатие на gerrit, а не git.

Я запускаю:

git push origin master:refs/for/master

И результат получения сведений о происхождении (с подробными сведениями о компании):

$ git remote show origin
* remote origin
  Fetch URL: ssh://[email protected]:29418/myrepo
  Push  URL: ssh://[email protected]:29418/myrepo
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master rebases onto remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
4b9b3361

Ответ 1

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

 Trunk ------ Parent A ----- Parent B ----- New change
(merged)     (unmerged)     (unmerged)

Я использовал cherry-pick для получения этих двух изменений локально (родительский A и родительский B), а затем третий cherry-pick, чтобы получить мое изменение от локальной ветки до попытки push. Именно это и вызвало эту проблему, потому что мои личные изменения по существу пытались переписать историю.

Правильный процесс будет состоять только в pull Parent B, когда он находится в багажнике. Это автоматически подтягивает любые фиксации между туловищем и им (в данном случае только с родителем A). Тогда cherry-pick мое новое изменение поверх этого и push будет работать нормально.

Ответ 2

Похоже, вы все делаете правильно, проверяя, что вы сделали изменения, которые Gerrit должен поднять.

git push origin master:refs/for/master

Возможно, это проблема? Если ваши изменения не указаны в локальной версии основной ветки, вы не нажимаете на свои изменения. Вместо этого попробуйте:

git push origin HEAD:refs/for/master

HEAD - это ярлык, который представляет вашу текущую фиксацию в git.

Ответ 3

Если вы пытаетесь обновить набор отзывов, каждый из которых имеет свой собственный идентификатор изменения, который вы хотите сохранить (скажем, после переустановки, когда вы меняете порядок двух коммитов), вы можете получить отклонение, если некоторые из фиксируется в куче, остается неизменным. Вы должны заставить новый хеш генерировать, переписывая коммиты или что-то подобное.

Ответ 4

Пожалуйста, обратитесь к официальной документации по этому вопросу здесь:

https://gerrit-review.googlesource.com/Documentation/error-no-new-changes.html

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

Мое исправление:

  • Если вы просто хотите быстро обойти эту проблему, сделайте git commit --amend, удалите существующий change-Id, предположив, что у вас настроены крючки git, вы можете закончить фиксацию, а новый change-Id должен быть назначенный вам.
  • Перейдите в gerrit и найдите существующий change-Id, выясните, что происходит, и исправьте соответственно. (рекомендуется)

Ответ 5

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

Ответ 6

У меня было такое же сообщение об ошибке, но изменения, которые я пытался нажать, были на вершине разных коммитов из исходного набора изменений (делали некоторые магические трюки с git cherry-pick, и, похоже, ему не понравилось, что он не понравился). Я отказался от своего первоначального изменения, а затем снова открыл его, когда понял, что могу исправить проблему, но не смог отправить gerrit с помощью git review.

На этом этапе моим быстрым решением было отказаться от первоначального изменения с веб-сайта gerrit и создать новое изменение, удалив последнюю строку change-Id: sha1 из сообщения фиксации с помощью git commit --amend.

Ответ 7

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

Активированный фиксатор считается идентичным текущему набору патчей, если

  • файлы в commit,
  • сообщение о фиксации,
  • автор фиксации и
  • родители фиксации

все идентичны.