Как я вижу из вашего примера, вы на самом деле пытаетесь синхронизировать локальную ветку 'branchname' с origin / branchname
Для этого вам не нужно никаких дополнительных сценариев, вы просто должны использовать git pull
вместо последовательности git checkout branchname; git fetch origin; git merge origin/branchname
посмотрите документы по отслеживанию веток в git и их преимуществам.
Вообще говоря, если у вас есть макет репо, подобный этому:
git branch -a
...
master
dev1
dev2
remotes/origin/master
remotes/origin/dev1
remotes/origin/dev2
А ваши ветви dev1 и dev2 отслеживают ветви для origin / dev1 и origin / dev2 соответственно, тогда вам просто нужно выполнить в репозитории:
git pull
Эта команда эффективно синхронизирует все ваши локальные ветви отслеживания с удаленными.
подробнее см. Здесь:
Документы Git Pull
Git удаленные ветки и отслеживание веток (Progit book)