Это особый случай перебазирования, просто ветвь пуста:
git checkout A
git rebase B
rebase
является более общим;он также обрабатывает этот случай:
До:
A1 -> A2 -> [A]
/
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8[B]
После:
A1' -> A2' -> [A]
/
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8[B]
A1 'и A2' объединяются для учета дельты между 4 и 8в родительской ветви.
Git rebase обрабатывает этот тривиальный случай без хлопот.Я создал репо с двумя коммитами на master
и веткой br
, указывающей на первый коммит.
$ git checkout br
Switched to branch 'br'
$ git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded br to master.
Пуф, готово.Теперь в журнале отображается ветвь, указывающая на второй коммит.
Мы также можем достичь этого «После»: [спасибо М. Флашену за то, что он указал, что это пропало]:
A1'' -> A2'' -> [A]
/
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8[B]
Вместо того, чтобы переходить к ветви B, мы бы назвали конкретный коммит 6, например,
git checkout A
git rebase 6 # rather than rebase B
Когда нет коммитов А1 и А2, это сводится к первоначальному вопросу: перемещение указателя [A] из 4до 6.