Работа с двумя коммитами git

Я работаю над проектом с git в качестве контроля версий.

Я сделал первый коммит, выдвинул его на рассмотрение.

Я начал дальнейшее развитие и сделал второй коммит, подтолкнул его к тому, чтобы его пересмотреть.

Теперь у меня есть конфликт слияния при первом коммите и некоторые отзывы о втором коммите. Я должен включить эти изменения:

Я выполнил следующие шаги:

  1. git reset --soft Head~1 -> Это получил ГОЛОВУ к предыдущему изменению

  2. Разрешенные конфликты

  3. Загрузил новый набор патчей для Commit1 (я использовал git gui - Изменить параметр Last Commit для этого)

  4. Включенная обратная связь на Commit2

  5. Добавил весь файл из Commit2 и сделал свежий коммит. Не было возможности изменить Commit2 из git gui сейчас.

Что в идеале должно быть сделано в этом случае, чтобы я мог изменить предыдущий Commit2 вместо создания нового commit.

PS: Ситуация становится еще более сложной, если между этими изменениями слились некоторые другие изменения. Это получает те изменения, когда Amend Last Commit выбран.

1 ответ

Работа с Gerrit может быть проблематичной, если у вас есть список связанных отзывов. В этой ситуации я склонен делать следующее:

  • Создайте новую (локальную) ветвь от родителя первого коммита.
  • Черри выбери первый коммит от Геррита в мою локальную ветку и исправь его git commit --amend
  • Теперь Черри выберет второй коммит поверх моей исправленной версии первого коммита.
  • разрешать любые конфликты, которые создают
  • разрешить отзыв с помощью обзора git commit --amend
  • Затем pushup оба совершает с git push origin <local branch>:refs/for/<remote branch>

Вы можете получить URL-адрес cherry-pick прямо из графического интерфейса Gerrit для изменения, и это сохранит идентификатор изменения в сообщении фиксации, так что вы просто получите новый набор патчей для каждого отзыва, и они останутся в цепочке.

Приложения Git GUI - полезный способ изучить хранилище и его историю. Но они никогда не раскрывают всю мощь командной строки git.

Другие вопросы по тегам