Поэтому я пытаюсь придумать псевдоним ZSH для Git, который переместит мою текущую ветвь на ветку, из которой она была первоначально получена (разветвлена).

Примеры:

Даны следующие названия ветвей A и B Если я время от времени создаю ветвь B путем ветвления от A я бы хотел быть в курсе событий B с A

Чтобы сделать это вручную, я бы обычно делал:

git rebase A

Который погасит коммиты с точки разветвления на B поверх A

Учитывая, что я хочу, чтобы команда делала это автоматически для любой ветки, над которой я работаю, это то, куда я направлялся:

git rebase --onto A {commit-hash-of-fork-point} B

Я считаю, что эта команда даст коммит точки форка:

git merge-base --fork-point A B

Итак, объединяя их:

git rebase --onto A $(git merge-base --fork-point A B) B

Как я могу написать это как общий псевдоним для ZSH, чтобы я мог просто вызвать gr и он определит текущую ветвь, разветвленную ветвь и т.д.

0