Passer au contenu
GitTree
Histoire et récupération

Comparez les commits avant et après une réécriture

What Changed… compare les correctifs de deux séries de commits, la branche avant une réécriture et la branche après celle-ci. Les commits de fusion sont omis. Les paires sont marquées Same, Changed, Dropped ou Added. La comparaison ne déplace pas les références ni ne modifie les fichiers. L'appariement ne prouve pas que deux commits signifient la même chose.

GratuitMis à jour

Fonctionne dans GitTree Gratuit : toutes les fonctionnalités Git locales, sans compte requis.

Sur cette page
  1. Avant de commencer
  2. Où le trouver
  3. Mesures
  4. Résultat attendu
  5. La commande Git
  6. Ce que signifie chaque état de paire
  7. Lorsque la comparaison ne peut pas s'exécuter
  8. Si quelque chose ne va pas
  9. Questions
  10. En rapport

Avant de commencer

  • What Changed fait partie du plan gratuit. Git sur votre PATH doit fournir git range-diff. Si ce n'est pas le cas, GitTree indique que ce Git ne peut pas comparer les séries réécrites.
  • Vous avez toujours les deux conseils. Après un rebase, l'ancienne astuce est souvent dans le reflog. Lost & Found peut trouver un commit vers lequel aucune branche ne pointe.

Où le trouver

  • Le menu Compare d'un commit : What Changed….
  • L'avis après une poussée forcée.
  • Alt+D, ou la palette de commandes.
ActionmacOSWindows et Linux
What Changed…⌥DAlt+D
La palette de commandes⌘⇧PCtrl+Shift+P

Mesures

  1. Ouvrir ce qui a changé

    Sélectionnez le commit que vous avez réécrit, ouvrez Compare et choisissez What Changed…, ou appuyez sur Alt+D. Le titre de la boîte de dialogue est What Changed…. La note indique qu'elle compare les correctifs de deux séries de validations et que les validations de fusion sont omises.

    Le graphique de validation du référentiel lumen avec un commit sélectionné
    What Changed s’ouvre à partir du menu Comparer d’un commit sur ce graphique. L'image fixe est le graphique, pas la boîte de dialogue de comparaison.Interface GitTree avec un référentiel de démonstration.
  2. Choisissez les deux conseils

    Définissez Before rewrite sur l'ancien conseil et After rewrite sur le nouveau conseil. Choose both tips si l'un ou l'autre côté est vide. Sous Advanced: excluded bases, Old base et New base limitent la plage. Laissez une base vide pour utiliser l’ancêtre commun des astuces.

  3. Comparer

    Appuyez sur Compare. Stop demande à la lecture de terminer l'étape en cours. Le résultat est Rewrite comparison. Chaque paire est Same, Changed, Dropped ou Added. Inspect patch difference ouvre une paire. No patches differ in these ranges signifie le match de série.

  4. Révisez avant de publier

    La note indique de vérifier les correctifs modifiés avant de les publier. Une paire Changed est le même emplacement de patch avec une différence différente. Dropped appartenait uniquement à l'ancienne série. Added est uniquement dans la nouvelle série. Rien n'est poussé par cette boîte de dialogue. Lorsque vous êtes prêt, utilisez le push normal, ou forcez le push avec bail si le dépôt distant a toujours l'ancienne astuce.

Résultat attendu

Vous pouvez nommer les correctifs qui ont survécu à la réécriture, ceux qui ont été modifiés et ceux qui sont apparus ou ont disparu. La branche, l'index et l'arbre de travail sont tels qu'ils étaient. Vérifiez le patch d’une paire modifiée avant de demander à quelqu’un d’autre d’utiliser le nouvel historique.

La commande Git

GitTree exécute git range-diff sur les deux plages. Vous pouvez exécuter la même comparaison dans un terminal. oldtip...newtip utilise la base de fusion. La réussite de quatre révisions définit vous-même les deux bases, ce que font les champs avancés.

git range-diff oldtip...newtip
git range-diff oldbase..oldtip newbase..newtip
git reflog show feature

git reflog show feature répertorie les astuces de la branche avant le rebase, vous pouvez donc coller l'ancienne astuce dans Before rewrite. Range-diff compare les correctifs. Il ne décide pas que deux messages de commit décrivent le même travail. Rebase et interactive rebase expliquent comment la réécriture se produit. La leçon tutoriel sur le rebase montre le formulaire de ligne de commande.

Ce que signifie chaque état de paire

États de paires dans la comparaison de réécriture
ÉtatSignification
IdemLe patch correspond aux deux séries
ChangéLa paire correspond et le patch diffère
AbandonnéLe patch est uniquement dans l'ancienne série
AjoutéLe patch est uniquement dans la nouvelle série

Les validations de fusion sont omises, donc une fusion que vous vous attendiez à voir n'est pas une paire abandonnée. Partial comparison: output reached its limit signifie que les plages sont trop larges. Affinez les bases. Git output format was not recognized signifie que le texte imprimé par Git n'a pas pu être analysé. Inspectez ce texte avant de faire confiance à la liste.

Lorsque la comparaison ne peut pas s'exécuter

Si Git n'a pas de range-diff, GitTree dit This Git cannot compare rewritten series. Update Git, or use Compare in the command palette to inspect the two revisions. Cette comparaison ordinaire est une différence entre deux arbres, pas une série de correctifs. Mettez à jour Git depuis l'écran de configuration ou depuis Git setup, puis ouvrez à nouveau What Changed.

Si quelque chose ne va pas

"Ce Git ne peut pas comparer les séries réécrites."

Le Git installé n’a pas de différence de plage. Mettez à jour Git, puis réessayez. En attendant, comparez les deux révisions depuis la palette de commandes. Cette vue est une arborescence différente, pas une série de correctifs.

"Choisissez les deux conseils."

Avant la réécriture ou Après la réécriture est vide. Choisissez l'ancienne astuce du reflog ou de Lost & Found, et la nouvelle astuce de la branche.

"Comparaison partielle : la production a atteint sa limite. Réduisez les plages."

Définissez Ancienne base et Nouvelle base de sorte que chaque côté ne soit que l'étirement réécrit, puis appuyez à nouveau sur Comparer.

"Aucun correctif ne diffère dans ces plages."

La série correspond ou les bases excluent les commits qui vous intéressent. Dégagez une base pour utiliser l'ancêtre commun, et vérifiez que vous n'avez pas choisi deux fois la même pointe.

Questions

What Changed change-t-il ma branche ?

Non, il lit deux séries de commits et affiche les états des paires. Les références et les fichiers restent là où ils sont.

Une paire modifiée a-t-elle le même identifiant de validation ?

Non. Un rebase écrit de nouveaux identifiants de validation. Modifié signifie que les patchs ont été appariés et que leurs différences ne sont pas identiques. Cela ne veut pas dire que les deux messages décrivent la même intention.

Pourquoi les commits de fusion manquent-ils ?

La boîte de dialogue indique que les validations de fusion sont omises. Range-diff compare les correctifs de chaque côté de la réécriture, pas les nœuds de fusion.

Où est l’ancienne astuce après un rebase ?

Il reste généralement dans le reflog jusqu'à l'expiration de l'entrée. Lost & Found peut rechercher ce reflog et les références de récupération de GitTree si aucune branche n'y pointe.

Est-ce que cela remplace git diff ?

Non, git diff compare deux arbres. git range-diff compare deux séries de correctifs. Utilisez ce qui a changé après une réécriture. Utilisez une comparaison ordinaire lorsque vous souhaitez connaître la différence entre les arbres.