Псевдоним Git для повторного слияния с последним от мастера

За последние несколько дней я потратил немало времени на SO, читая темы, но до сих пор не нашел достойного ответа на этот вопрос.

Если я работаю в функциональной ветке и через несколько дней хочу получить последние изменения из мастера, я запускаю команду:

git stash; and git checkout master; and git pull origin master; and git checkout <FEATURE BRANCH>; and git merge master; and git stash apply;

Если это выглядит немного не так, это потому, что я использую Fish, а не Bash. Просто замените все ; and на &&, чтобы заставить его работать в Bash.

В любом случае, я бы хотел, чтобы псевдоним git под названием «remaster» автоматически делал это для меня, чтобы, когда я набираю git remaster, он запускал все эти команды. Самая большая проблема — получить имя функциональной ветки и сохранить его для использования позже в последовательности, когда мы перепроверим ее.

У кого-нибудь есть способ сделать это или какие-либо идеи?


person Jesse Atkinson    schedule 28.06.2013    source источник


Ответы (2)


Вы можете использовать git fetch и объединить удаленные изменения в свою ветку с помощью git merge origin/master.

Этот псевдоним работает в bash, поэтому вы, вероятно, захотите перенести его в fish:

[alias]
    remaster = "!f() { git stash && git fetch origin && git merge origin/master && git stash apply; }; f"

Но в любом случае текущее имя ветки можно получить через git rev-parse --abbrev-ref HEAD.

person ДМИТРИЙ МАЛИКОВ    schedule 28.06.2013

Вы можете уменьшить количество команд, объединившись с origin/master, например:

git stash
git fetch origin
git merge origin/master
git stash pop

На основе этого можно сделать макрос:

[alias]
remaster = "!f() { git stash && git fetch origin && git merge origin/master && git stash pop }; f"
person David Pfeffer    schedule 28.06.2013