Изменение незначительной ошибки в старом коммите в git - PullRequest
1 голос
/ 17 января 2012

Каков наилучший способ исправить небольшую ошибку, например опечатку, в старом коммите вместо создания нового коммита, который его исправляет? Я не хочу портить историю большим количеством "исправлений опечаток". Я еще никому не передавал коммиты.

Допустим, в этом сенарио я хочу исправить опечатку в коде 15 января при сохранении также двух других коммитов.

commit 826da06f085664298164a4bfc9994cad109c59f8
Author: Me
Date:   Tue Jan 17 18:48:12 2012 +0800

    feature 3 working

commit d816dd97a207add63d31958c3ffba84b65681810
Author: Me
Date:   Tue Jan 16 17:47:29 2012 +0800

    feature 2 working

commit 972ded30c20692cb74ae07d0c941c43022c905bd
Author: Me
Date:   Thu Jan 15 08:48:40 2012 +0800

    feature 1 working

Ответы [ 4 ]

2 голосов
/ 17 января 2012

Я использую следующий сценарий.

  1. Исправить незначительную ошибку
  2. Зафиксировать исправление
  3. git rebase -i HEAD ^ 4

Это откроет редактор vim (возможно) со следующим текстом

pick 972ded feature 1 working
pick d816dd feature 2 working
pick 826da0 feature 3 working
pick xxxxxx fix feature 1

, измените его на

pick 972ded feature 1 working
f xxxxxx fix feature 1
pick d816dd feature 2 working
pick 826da0 feature 3 working

Обратите внимание, что я перемещаю коммит "fix feature 1" во вторую строкуи измените выберите на f .Это заставляет git объединять «работающую функцию 1» и «фиксировать функцию 1», фиксируя один коммит с первым сообщением о фиксации (т. Е. «Функция 1 работает»).

«функция 2 работает» и«feature 3 working» передает git листья «нетронутыми».(На самом деле это применяется, это фиксирует новую историю. Таким образом, они получат новые идентификаторы)

1 голос
/ 17 января 2012
rebase -i <sha of commit PRIOR to the one you want to change>

затем выберите, какие коммиты вы хотите изменить, удалить и т. Д.

1 голос
/ 17 января 2012
git rebase -i HEAD~3

- это то, что вы хотели бы сделать.Вы являетесь автором 3 коммитов, и если вы его где-то уже не продвигали, я думаю, что это нормально.В любом другом случае я бы рекомендовал не выполнять действие.

Подробнее см. на этой хорошей странице

0 голосов
/ 17 января 2012

Мой предпочтительный способ - создать новую ветку из этого проблемного коммита. Исправлены проблемы с этой новой веткой и коммит. Затем объедините эту новую ветку с оригинальной веткой. Не уверен, что это то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...