2016-03-31 1 views
1

Je travaille actuellement sur un projet avec une équipe. Ce projet a de nombreuses branches développées en parallèle.Liste non commise dans toutes les branches

Voici le problème que j'ai rencontré: je travaille sur plusieurs branches, en m'engageant autant que possible. Et apparemment, parfois j'oublie de pousser les commits une fois que j'ai fini de travailler sur une branche. Cela conduit à avoir des changements impassibles pendant longtemps, et bien sûr, d'autres membres de l'équipe travailleraient sur ces branches "non fixées" et cela pourrait causer des problèmes. Et à aucun moment, alors que je travaillais sur d'autres branches, Git me dit que j'ai des mandats non bloqués sur d'autres branches que l'actuelle.

Existe-t-il une commande, similaire à git cherry -v, qui indiquerait des validations non poussées sur toutes les branches?

J'ai remarqué que je pouvais utiliser git cherry -v origin/branchA branchA pour afficher la validation de brancheA de n'importe quelle branche. C'est assez proche de ce que je cherche, mais je le veux pour toutes les branches en même temps. Existe-t-il un moyen de généraliser à toutes les branches? (Je ne pense pas à se rappeler sur quelle branche j'ai oublié de pousser)

+0

ne pas utiliser la cerise, mais 'branche git -vv' offre un bon point de départ, je –

Répondre

0

Vous pouvez écrire un script simple:

(Dans votre .bashrc)

alias git-list-unpushed='git for-each-ref --format "%(refname)" | grep "refs/remotes" | sed "[email protected]/remotes/@@" | while read branch; do echo "$branch"; git cherry -v "$branch" "${branch/origin\//}"; done' 

Vous pouvez ensuite exécuter git- liste-unpushed pour voir un résumé de tous les commits unpushed pour chaque branche

+1

espère trouver une commande git ... Mais quand même, j'ai essayé ce script (je ne suis pas familier avec les scripts donc je don ne comprends pas tout), et ça ne marche pas. Je reçois beaucoup de déchets ('fatal: commit inconnu 'pour chaque commit) et je ne peux pas voir les changements non modifiés. – Puck

0

Basé sur l'idée de edi9999, j'ai créé le script suivant:

#!/bin/sh 

branches=$(git for-each-ref --format='%(upstream:short):%(refname:short)' refs/heads) 
for raw_branch in $branches; do 
    remote_branch=$(cut -d ':' -f 1 <<< "$raw_branch") 
    local_branch=$(cut -d ':' -f 2 <<< "$raw_branch") 

    echo $local_branch 
    if [ "x$remote_branch" == "x" ]; then 
    echo WARNING: No remote branch! 
    else 
    git cherry -v "$remote_branch" "$local_branch" 
    fi 

    echo 
done 

Parce que le : est toujours présent, cut devrait être bon.