Подстановочные знаки в спецификации названий веток в "git merge" - PullRequest
4 голосов
/ 05 марта 2011

Можно ли как-то использовать подстановочные знаки при указании имен веток в "git merge"?

Например, если у меня есть:

sbos@malta:~/tmp/texterra$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/share/branch1
  origin/share/branch2
  origin/share/another-branch

Могу ли я сделать:

git merge origin/share/*

объединить с branch1, branch2 и другой веткой?

Ответы [ 2 ]

9 голосов
/ 05 марта 2011

Я не думаю, что вы можете использовать подстановочные знаки напрямую таким образом, но вы можете использовать git for-each-ref для сопоставления имен веток.Например, посмотрите на вывод:

git for-each-ref --format="%(refname)" refs/remotes/origin/share/*bran*

(Это умышленно больше, чем нужно в шаблоне, чтобы я мог продемонстрировать, что подстановочные знаки работают. Вы могли бы просто сделать refs/remotes/origin/share/ вместо этого.)

Итак, в качестве одной команды вы можете сделать:

git merge $(git for-each-ref --format="%(refname)" refs/remotes/origin/share/)

... чтобы слить осьминога из всех этих ветвей.

Честно говоря, я 'Мне трудно представить себе ситуацию, в которой я бы не очень хотел делать:

git merge origin/share/branch1
git merge origin/share/branch2
git merge origin/share/another-branch

... или, возможно, если есть лотов ветвей:

for c in $(git for-each-ref --format="%(refname)" refs/remotes/origin/share/)
do
    git merge $c || break
done
3 голосов
/ 13 сентября 2014

git branch -r | grep "share" | xargs git merge?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...