Следующая однострочная строка ускоряет пересылку всех ветвей, которые имеют ветку восходящего потока, если это возможно, и печатает ошибку в противном случае:
git branch \
--format "%(if)%(upstream:short)%(then)git push . %(upstream:short):%(refname:short)%(end)" |
sh
Как это работает?
Используется пользовательский формат с командой git branch
. Для каждой ветви с восходящей веткой она печатает строку со следующим шаблоном:
git push . <remote-ref>:<branch>
Это может быть передано непосредственно в sh
(при условии, что имена ветвей правильно сформированы). Пропустите | sh
, чтобы увидеть, что он делает.
Протест
В настоящее время извлеченная ветвь не будет обновлена с сообщением как
! [remote rejected] origin/master -> master (branch is currently checked out)
Для этого вы можете прибегнуть к обычному git pull --ff-only
.
Псевдоним
Добавьте следующее к вашему .gitconfig
, чтобы git fft
выполнил эту команду:
[alias]
fft = !sh -c 'git branch --format \"%(if)%(upstream:short)%(then)git push . %(upstream:short):%(refname:short)%(end)\" | sh' -
Псевдоним - это сокращение от «ускоренного отслеживания (ветки)».