Je suis sur Branch-X et j'ai ajouté quelques commits supplémentaires. Je veux voir toutes les différences entre MASTER et la branche sur laquelle je suis en termes de commits. Je pourrais juste faire un
git checkout master
git log
et puis un
git checkout branch-X
git log
et visuellement les diff, mais j'espère une méthode plus facile, moins sujette aux erreurs.
Vous pouvez obtenir une sortie visuelle vraiment agréable de la différence de vos branches avec cette
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative master..branch-X
Vous pouvez facilement le faire avec
git log master..branch-X
Cela vous montrera les commits que Branch-X a mais que Master ne fait pas.
Je pense que c’est une question de choix et de contexte. Je préfère utiliser
git log Origin/master..Origin/develop --oneline --no-merges
Il affichera les commits en développement qui ne sont pas dans la branche principale.
Si vous voulez voir quels fichiers sont réellement modifiés, utilisez
git diff --stat Origin/master..Origin/develop --no-merges
Si vous ne spécifiez pas d'arguments, le diff complet sera affiché. Si vous voulez voir visual diff, installez meld
sur linux ou WinMerge
sur Windows. Assurez-vous qu’ils sont les difftools par défaut .Puis utilisez quelque chose comme
git difftool -y Origin/master..Origin/develop --no-merges
Au cas où vous voudriez le comparer avec la branche actuelle. Il est plus pratique d'utiliser HEAD à la place du nom de la branche, comme suit:
git fetch
git log Origin/master..HEAD --oneline --no-merges
Il vous montrera tous les commits, sur le point d'être fusionnés
Si vous êtes sous Linux, gitg
est la solution idéale pour le faire très rapidement et graphiquement.
Si vous insistez sur la ligne de commande, vous pouvez utiliser:
git log --oneline --decorate
Pour rendre git log
plus agréable par défaut, je définis généralement les préférences générales suivantes:
git config --global log.decorate true
git config --global log.abbrevCommit true
Je suggérerais ce qui suit pour voir la différence "in commits". Pour une différence symétrique, répétez la commande avec des arguments inversés:
git cherry -v master [your branch, or HEAD as default]
si vous voulez utiliser gitk:
gitk master..branch-X
il a une belle vieille école GUi
J'ai utilisé certaines des réponses et en ai trouvé une qui convient à mon cas (assurez-vous que toutes les tâches sont dans la branche de publication).
D'autres méthodes fonctionnent également, mais j'ai constaté qu'elles pourraient ajouter des lignes dont je n'ai pas besoin, comme les commandes de fusion qui n'ajoutent aucune valeur.
git fetch
git log Origin/master..Origin/release-1.1 --oneline --no-merges
ou vous pouvez comparer votre courant avec le maître
git fetch
git log Origin/master..HEAD --oneline --no-merges
git fetch
est là pour vous assurer que vous utilisez les informations mises à jour.
De cette manière, chaque commit sera sur une ligne et vous pourrez le copier/coller dans un éditeur de texte et commencer à comparer les tâches avec les commits qui seront fusionnés.
Si vous souhaitez comparer en fonction des messages de validation, vous pouvez procéder comme suit:
git fetch
git log --oneline Origin/master | cut -d' ' -f2- > master_log
git log --oneline Origin/branch-X | cut -d' ' -f2- > branchx_log
diff <(sort master_log) <(sort branchx_log)
#! /bin/bash
if ((2==$#)); then
a=$1
b=$2
alog=$(echo $a | tr '/' '-').log
blog=$(echo $b | tr '/' '-').log
git log --oneline $a > $alog
git log --oneline $b > $blog
diff $alog $blog
fi
En contribuant cela, cela permet aux journaux a et b d'être différés visuellement, côte à côte, si vous disposez d'un outil de comparaison visuelle. Remplacez la commande diff à la fin par la commande permettant de démarrer l’outil visuel diff.