Gerrit воссоздает изменения-иды

Я использую gerrit. Я использовал следующую команду

$ cd .git/hooks
$ scp -P 29418 [email protected]:hooks/commit-msg .
$ cd ../..

Это добавляет идентификатор изменения в мое сообщение фиксации, однако, если я исправляю фиксацию, он создает NEW change-id. Поэтому, когда я возвращаюсь к gerrit, это не добавляет набор патчей, он создает совершенно новую запись отзыва.

Кто-нибудь предлагает?

Нашел ответ, но stackoverflow не позволит мне ответить на мой собственный вопрос.

Так что это была полная ошибка с моей стороны. Когда я пытался совершить    git commit --amend -m "Начальная фиксация"

Я вставлял сообщение о фиксации, и оно уничтожало идентификатор изменения, тем самым давая мне новый.

Ответ 1

commit-msg работает так:

  • Проверьте, есть ли у вас идентификатор изменения в сообщении о фиксации.
  • Если нет, генерирует один.

Если вы наберете git commit --amend и отредактируете сообщение фиксации, у вас все еще есть старый идентификатор изменения (это хорошо).

Но если вы наберете git commit --amend -m "....", вы удалили change-id, поэтому gerrit генерирует новый.

Правило большого пальца: Не используйте --amend -m с герритом.

Ответ 2

Если git commit --amend или git commit --amend -m "...." не помогает, а gerrit все еще жалуется на отсутствующий идентификатор изменения. (Это происходит из-за проблем с сетью в основном)

Вот как я получил это решение (Убедитесь, что я применил привязку commit-msg, в родительском каталоге извлеченного каталога ссылка):

  • С помощью git stash выберите "Сменить изменения".
  • Используется gitk &, чтобы переустановить изменение только на предыдущую фиксацию. введите описание изображения здесь
  • Затем вытащите и переустановите из Repo git pull --rebase.
  • Затем примените спрятанные изменения с помощью git stash apply, справки. Разрешить конфликты слияния, если они используются git mergetool.
  • Снова повторив изменение с помощью git commit или git commit --amend, это сгенерировало новое изменение-Id
  • Нажмите на изменения в ветке в репозитории, используя команду git push ....

Аналогичный вопрос есть и для справки

Ответ 3

  1. git commit --amend
  2. Удалите строку Change-Id вручную, сохраните и закройте
  3. git commit --amend --no-edit

А хук создаст новый хэш Change-Id, при его отсутствии.