git rebase -i - root создает несвязанную историю - PullRequest
1 голос
/ 03 августа 2020

Скажем, у меня есть следующая история коммитов:

* 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 ведет себя так, чтобы создавать несвязанную историю, и могу ли я заставить его вести себя так, как я ожидал?

1 Ответ

0 голосов
/ 06 августа 2020

После настройки рабочего процесса GitHub Actions, который выполняет git rebase --root, как в вопросе, оказывается, что не создает несвязанную историю, в отличие от того, когда я запускаю команду на моем git версия 2.24.1.windows.2. Возможно, они исправили поведение в более поздней версии git.

...