Перебазирование всех коммитов с момента ветвления
Если вы просто хотите перебазировать все коммиты, которые являются новыми в вашей ветке, со времени, когда вы переходили из родительской ветки, было бы проще просто иметь следующий псевдоним в вашей конфигурации:
rbi = !sh -c \"git rebase -i `git merge-base $1 HEAD`\" -
Затем, если вы хотите перебазировать все коммиты, которые вы добавили в вашу текущую ветку, вы можете просто запустить:
git rbi parentBranch
В этом подходе используется аргумент, но вместо того, чтобы знать, сколько коммитов нужно вернуть, вы просто указываете имя ветви, и он вычисляет самый последний коммит, общий для текущей ветви и родительской ветви, через git merge-base
Почему это, а не git rebase -i parentBranch
Причина, по которой вы делаете это, а не прямая git rebase -i parentBranch
, заключается в том, что вы можете не захотеть иметь дело с конфликтами слияния до более поздней точки или даже иметь дело с конфликтом слияния в одном коммите, а затем в том же самом конфликт по той же линии в другом коммите. См https://stackoverflow.com/a/31036645/444610