Comment faire pour voir les changements entre les deux s'engage sans s'engage entre les deux?
Comment faire git diff
seulement de montrer la différence entre les deux s'engage, à l'exclusion de l'autre s'engage entre les deux?
- "git diff" toujours montrer la différence entre les deux commits (ou de s'engager et de répertoire de travail, etc.).
- il se demande comment voir la différence entre les changements introduits par une seule commande et les changements introduits par un autre commit. En d'autres termes, la diff de diff ou interdiff.
- et si vous ajoutez l'option --dirstat=les fichiers de paramètre à la commande diff, vous allez vous prendre une très belle capture d'écran précis sur les projets et les fichiers qui sont modifiés, avec un changement de pourcentage. Comme ceci: git diff [commit-nombre] [commit-nombre] --dirstat=fichiers
Vous devez vous connecter pour publier un commentaire.
vous pouvez tout simplement passer le 2 commits git diff comme :
my.patch
à autre branche?git diff old_commit_hash new_commit_hash
fonctionne!Demandant la différence /entre/deux commits sans y compris les commits dans l'entre-deux n'a guère de sens. Les Commits sont juste des instantanés du contenu du référentiel; demander la différence entre les deux inclut nécessairement la leur. Donc, la question est, que recherchez-vous vraiment?
Que William a suggéré, cherry-picking peut vous donner le delta d'un seul commit relocalisée sur le dessus de l'autre. Qui est:
Cela prend du commit 'abcdef', la compare à son ancêtre immédiat, puis applique que la différence sur le dessus de la "012345'. Cette nouvelle différence est ensuite montré - le seul changement est le contexte vient de "012345" plutôt que de " abcdef l'ancêtre immédiat. Bien sûr, vous pouvez obtenir des conflits et etc, donc ce n'est pas un processus très utile dans la plupart des cas.
Si vous êtes simplement intéressé à abcdef lui-même, vous pouvez faire:
Cela se compare abcdef à son ancêtre immédiat, seul, et est généralement ce que vous voulez.
Et bien sûr
vous donne toutes les différences entre ces deux commits.
Il serait utile d'avoir une meilleure idée de ce que vous essayez d'atteindre - comme je l'ai mentionné, en demandant la différence entre les deux s'engage sans ce qui est entre les deux n'a pas de sens.
origin/featurebranch#HEAD
àlocal/featurebranch#HEAD
peut vous aider à vous assurer que vous n'avez pas le fumier quoi que ce soit pendant la résolution de conflits.Pour comparer deux git s'engage 12345 et abcdef, les patchs, on peut utiliser la commande diff comme
diff <(...) <(...)
n'. (Je l'ai juste essayé).diff
ing la sortie de deuxdiff
s. Cela implique la lecture et la comparaison des deux flux d'entrée.diff
(GNU, ou Unix,diff
) peut le faire, alors quegit diff
ne peut pas. Certains peuvent se demander pourquoi vouloir le faire. Je suis dans le milieu de train de le faire maintenant, le nettoyage d'une fusion qui est allé mal.Exemple:
Il montre la différence sur ce fichier entre ceux s'engage.
Disons que vous avez ce
Et vous voulez vous assurer que
A
est le même queA0
.Cela fera l'affaire:
diff <(git diff B A) <(git diff D A0)
(même résultat qu'avec git show)Supposons que vous voulez voir la différence entre s'engage 012345 et abcdef. Les éléments suivants doivent faire ce que vous voulez:
Quoi à ce sujet:
Il est très pratique de tout tuyau d'autres, moins si vous voulez comparer plusieurs différents changements à la volée.
Pour vérifier les changements complets:
Pour ne cocher que la changé/ajouté/supprimé des fichiers:
NOTE: Pour la vérification de la diff sans s'engager entre les deux, vous n'avez pas besoin de mettre de la validation des identifiants.
Mon
alias
paramètres dans~/.bashrc
fichier pourgit diff
:L'anglais n'est pas ma langue maternelle, s'il vous plaît excuser les erreurs de frappe
J'ai écrit un script qui affiche la diff entre les deux commits, fonctionne bien sur Ubuntu.
https://gist.github.com/jacobabrahamb4/a60624d6274ece7a0bd2d141b53407bc
Depuis Git 2.19, vous pouvez simplement utiliser:
git range-diff rev1...rev2
- comparer deux commettre des arbres, à commencer par leur ancêtre commun
ou
git range-diff rev1~..rev1 rev2~..rev2
- comparer des changements introduits par 2 s'engage