Автоматизировать можно в двух местах: функцией в конфиге шелла или алиасом в
~/.gitconfig. Взял второе. На вопрос почему? По тому что!Алиас, который начинается с восклицательного знака, выполняет не git-подкоманду, а произвольный shell-код:
[alias]
tratata = "!f() { set -e; git switch dev; git pull origin dev; git push origin dev; git switch main; git pull origin main; git merge --no-edit dev; git push origin main; }; f"
Два места, без которых это опасно.
set -e рвёт цепочку на первой ошибке. Без него мердж упадёт в конфликт, а следующей строкой всё равно уедет git push origin main.--no-edit не открывает редактор ради сообщения мердж-коммита. Дефолтное «Merge branch 'dev'» меня устраивает, и цепочка не должна замирать на vim.Деталь, о которой стоит знать. Shell-алиас стартует не из текущей папки, а из корня git репозитория. Поэтому полная версия спокойно читает
./go.mod из корня, берёт оттуда module и открывает https://{repo}/-/pipelines (домашнее задание: допиши руками).Честная часть: однострочник в gitconfig читать невозможно. Пока это семь команд подряд, терпимо. Появится условие или цикл, вынесу в скрипт и оставлю в алиасе только вызов. Отлаживать shell внутри строки, экранированной под gitconfig, удовольствие ниже среднего. Хорошо что есть Claude.
