Скажем, у меня есть следующая история коммитов:
* E (HEAD -> mybranch, origin/mybranch) Foo 3
|
* D Foo 2
|
* C Update readme
|
* B Foo 1
|
* A Initial commit
Я хочу перебазировать исходную фиксацию и отбросить все коммиты с именем «Foo», поэтому я запускаю
git rebase -i --root
Однако , это создает новую, не связанную историю, как это:
* C' (HEAD -> mybranch) Update readme
|
* A' Initial commit
* E (origin/mybranch) Foo 3
|
* D Foo 2
|
* C Update readme
|
* B Foo 1
|
* A Initial commit
С другой стороны, если я запускаю
git rebase -i A # where "A" is the commit SHA
, я получаю ожидаемое поведение ветвления:
* C' (HEAD -> mybranch) Update readme
|
| * E (origin/mybranch) Foo 3
| |
| * D Foo 2
| |
| * C Update readme
| |
| * B Foo 1
|/
* A Initial commit
Так почему же git rebase --root
ведет себя так, чтобы создавать несвязанную историю, и могу ли я заставить его вести себя так, как я ожидал?