Просто напишите себе небольшой сценарий или псевдоним, который выполняет перебазирование и, если (и только если!) Это удалось, выполняет операцию ускоренной перемотки на master
(учитывая, что это именно тот результат, который вам нужен).
Помните, что любая перебазировка может пойти не так, как из-за того, что пользователь был прерван, так и из-за ошибки слияния во время одного из шагов выбора вишни. К счастью, git rebase
сам по себе является хорошим инструментом Unix / Linux / POSIX: при успешном завершении он равен нулю, а при ошибке - ненулевым, так что вы можете определить, успешно он или нет. Другие команды Git похожи. Следовательно, это достижимо, если использовать небольшую функцию оболочки bash / sh:
rebase-merge() {
case $# in
1) ;; # good
*) echo "usage: rebase-merge <branch>" 1>&2; exit 1;;
esac
git checkout "$1" &&
git rebase -i master &&
git checkout master &&
git merge --ff-only "$1"
}
Можно заключить это в однострочное выражение, которое входит в ваш глобальный .gitconfig
как псевдоним Git. Я оставляю это как упражнение для читателя.
Существуют и другие, более причудливые способы сделать это, но это буквально то, что вы делаете (но упрощено для использования git mege --ff-only
, чтобы убедиться, что Git выполняет только быстрое слияние, или дает сбой, если это невозможно) Просто превратился в команду. Я добавил проверку, чтобы убедиться, что «$ #» (количество аргументов) равно 1, используя предпочитаемую мной конструкцию, поскольку она позволяет вам предоставить два аргумента, если вы решите, что вам нужна целевая ветвь (в настоящее время жестко задана как * 1012). *, дважды) необязательно: просто измените настройку с "case ..." на:
case $# in
1) target=master;;
2) target="$2";;
*) echo "usage ..." ...
esac
и затем используйте "$target"
вместо литерала master
.