Git : exécuter des commandes sur toutes les branches

Voici un script que j’utilise pour fetch + merge récursivement tous les repos git à partir du répertoire courant. Il traite toutes les branches locales :

git for-each-ref --format='%(refname:short)' refs/heads/ | while read -r branch
do
    # Changement de branche
    git checkout "${branch}"

    # Code à exécuter sur cette branche
    # Exemple avec un git pull
    git pull
done

Exemple de script que j’utilise pour mettre à jour toutes les branches d’un repo Git :

current_branch="$(git rev-parse --abbrev-ref HEAD)"
echo " * Current branch : ${current_branch}"

echo " * Fetching all changes from Git..."
git fetch --all

git for-each-ref --format='%(refname:short)' refs/heads/ | while read -r branch
do
    if git diff --exit-code "${branch}" "origin/${branch}"
    then
        echo " * No change"
    else
        echo " * Moving to branch ${branch}..."
        git checkout "${branch}"
        echo " * Merging with origin branch..."
        git merge "origin/${branch}" "${branch}"
    fi
done

echo " * Moving back to ${current_branch}..."
git checkout "${current_branch}"

Sortie :

 * Current branch : master
 * Fetching all changes from Git...
Fetching origin
(...)
Already on 'master'
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
 * Merging with origin branch...
Updating dfb2637..78c0d21
Fast-forward
 doc/syntastic-checkers.txt | 9 ++++++++-
 plugin/syntastic.vim       | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)
 * Moving back to master...
Already on 'master'

Source : fait maison 🙂

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s