Je souhaite être en mesure de voir les changements dans une branche, depuis la dernière fois que je l'ai passée en revue, mais en ignorant les changements de maître qui sont survenus entre-temps.Git diff branche avant et après rebase ignorer les modifications dans le maître
F - G H - I
/ /
A - B - C - D - E
I ont deux gammes engager c3af8fc5..7ccc4b49
(représenté par B - G
) et 4dfdabdd..301a443c
(représenté par E - I
).
Imaginez, vous faites l'examen du code pour votre collègue, vous extrayez sa branche locale et sur votre HEAD
pointe maintenant à G
. Vous faites l'examen du code et passez à autre chose.
Quelque temps passe, les nouveaux commits sont apparus dans le maître (C
, D
et E
) et votre collègue ont résolu les commentaires de votre avis. Il a écrasé les modifications pour commettre F
et G
, parce qu'il a renommé la méthode introduite dans F
et a fixé son utilisation dans G
. Il a également rebasé la branche sur le maître, pour s'assurer que tout fonctionne.
Maintenant, vous voulez faire une révision de code, mais vous êtes fainéant de faire une révision de code de toute la branche, donc vous voulez seulement voir ce qui a changé depuis la dernière fois. Vous avez toujours les anciennes références récupérées localement. Que faire?
Vous pourriez faire quelque chose comme git-diff G I
, mais cela vous montrerait aussi ce qui a changé dans le maître qui ne vous aide pas du tout.
Vous pouvez également rebaser les anciennes références sur le maître actuel, puis les modifier. Cela pourrait aider, mais il pourrait également y avoir beaucoup de conflits, ce qui pourrait rendre la révision de toute la branche plus facile.
J'ai essayé diffing patches
diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)
il me aide à quelque part diriger mon attention, mais il est très brut.
Connaissez-vous une façon plus agréable et plus native de résoudre ce problème? Merci.
Edit: Je viens discovered interdiff, ce qui rend diffing deux diffs beaucoup plus agréable
interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c) | colordiff
mais encore, il ne dispose pas du contexte que git pourrait fournir - si ... Y a-t-il quelque chose de mieux?
Git peut seulement montrer le diff entre deux commits. On dirait que vous voulez un diff d'un diff, donc ce n'est pas quelque chose que Git peut faire. – poke
Je sais, mais git a le contexte des changements, Il pourrait générer ce diff de deux diffs d'une manière intelligente. –
Mais à quoi cela ressemble-t-il? Je ne peux même pas y penser visuellement. – poke