web-dev-qa-db-fra.com

Comment voir les différences de commit entre les branches dans git?

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.

283
Avery

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
280
tom

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.

634

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

64
zainengineer

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
14
mvp

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]
12
mmaruska

si vous voulez utiliser gitk:

gitk master..branch-X

il a une belle vieille école GUi

8
snowcamel

Pas la réponse parfaite mais fonctionne mieux pour les personnes utilisant Github:

enter image description here

Accédez à votre référentiel: Insights -> Network

4
AIon

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.

0

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)
0
Maroun
#! /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.

0
Kim Briggs