Git перезагрузить интерактивный последний n совершает

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

$ git rebase --interactive --onto <the-ID-of-the-first-commit-to-rewrite>

просто всплывает VI с помощью

noop

за которым следует прокомментированная информация. После выхода моя голова reset к указанной фиксации.

Как правильно инициировать интерактивную rebase для изменения коммитов с определенного фиксации?

Ответ 1

вы должны использовать

git rebase --interactive <sha1>

где <sha1> должен не быть sha первой фиксации, которую вы хотите переписать, но sha фиксации непосредственно перед.

если ваша история выглядит так:

pick 43576ef last commit
...
pick 5116d42 first commit to rewrite
pick cb85072 last good commit

тогда вы можете указать различные способы указания фиксации, на которую нужно переустановить:

git rebase -i cb85072
git rebase -i 5116d42^

где

  • ^ означает фиксацию непосредственно перед.
  • -i для краткости --interactive

Ответ 2

Вы также можете отступить от последнего фиксации некоторым количеством коммитов. Например, если вы хотите переустановить последние 5 коммитов, вы можете использовать эту команду: git rebase -i HEAD~5.

Ответ 3

Я пропустил действие rebase в вашей инструкции:

git rebase -i <id-of-commit>