Работа с двумя коммитами git
Я работаю над проектом с git в качестве контроля версий.
Я сделал первый коммит, выдвинул его на рассмотрение.
Я начал дальнейшее развитие и сделал второй коммит, подтолкнул его к тому, чтобы его пересмотреть.
Теперь у меня есть конфликт слияния при первом коммите и некоторые отзывы о втором коммите. Я должен включить эти изменения:
Я выполнил следующие шаги:
git reset --soft Head~1
-> Это получил ГОЛОВУ к предыдущему изменениюРазрешенные конфликты
Загрузил новый набор патчей для Commit1 (я использовал
git gui
- Изменить параметр Last Commit для этого)Включенная обратная связь на Commit2
Добавил весь файл из 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.