GIT: для l oop в местных отделениях - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу перебрать все мои локальные ветви и выполнить следующие действия;

  1. Переключиться на ветку
  2. Выполнить некоторые операции. (Как переписывание записей в кеш)
  3. Pu sh эта ветвь

Ответы [ 3 ]

2 голосов
/ 06 февраля 2020

Использование git for-each-ref:

git for-each-ref --format='%(refname:short)' refs/heads |
    while read branch; do
        git checkout $branch
        # Do something with the code
    done

# Push all branches at once instead of pushing them one by one
git push --all
0 голосов
/ 06 февраля 2020

У меня на самом деле есть функция bash, которую довольно легко изменить в соответствии с вашими потребностями. Он называется gsync и в основном синхронизирует все ветви, для которых у меня есть локальная копия. Выходные данные git br - это одно имя ветви для всех ветвей, за исключением того, что моя текущая ветвь также имеет * в начале строки.

Поэтому я использую это для получения текущей ветви и сначала обработайте все остальные ветки, чтобы я снова оказался в той же ветке, в которой начал.

function gsync {
    old="$(git branch | awk 'NF==2{print $2}')"

    for i in $(git branch | awk 'NF==1{print}') ; do
        printf "\n===== $i\n"
        git co $i && git pull
    done
    printf "\n===== $old\n"
    git co $old && git pull
    printf "\n=====\n"
    git branch
}

Вот пример прогона:

[~/myrepo]> gsync

===== PaxBranch-42
Switched to branch 'PaxBranch-42'
Your branch is up to date with 'origin/PaxBranch-42'.
Already up to date.

===== master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Already up to date.

=====

  PaxBranch-42
* master
0 голосов
/ 06 февраля 2020

с использованием bash:

for branch in $(git branch | sed 's/* /  /')
do
    git checkout $branch
    # here do the operations you want to do on each branch.
done

ПРИМЕЧАНИЕ: git branch | sed 's/* / /') перечисляет ветви, но удаляет звездочку (*)

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