Git rebase interactive последние N коммитов

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

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

просто всплывает VI с

noop

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

Как правильно вызвать интерактивный rebase для изменения совершает с определенного момента?

3 ответов


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

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

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


Я скучаю rebase в вашей инструкции:

git rebase -i <id-of-commit>