web-dev-qa-db-fra.com

Dans git, comment créer un patch unique pour les 2 dernières révisions?

Je voudrais créer un patch pour les 2 dernières révisions.

git format-patch -2

me donne 2 fichiers de correctifs, un pour chaque révision

git format-patch HEAD~2..HEAD

donne la même chose.

git format-patch -1 HEAD~2..HEAD

donne un seul fichier, mais ne contient que des modifications pour la dernière révision.

Y at-il un moyen de faire cela dans Git?

47
Matthew
git diff HEAD~2..HEAD > my-patch.diff

Il n'aura cependant aucune métadonnée par commit de patch-format.

50
Tobu

Utilisez l'option --stdout, puis convertissez-la dans un fichier.

Ainsi:

git format-patch HEAD~2..HEAD --stdout > changes.patch

Cela conservera les métadonnées par commit.

41
JC Brand

Avec Git 2.20 (T4 2018) et plus, vous avez maintenant:

  • git format-patch --interdiff.
  • git format-patch --rangediff

Les deux aident à expliquer la différence entre cette version et la tentative précédente dans la lettre d'accompagnement (ou après les tirets sous forme de commentaire).

format-patch: permet à --interdiff/--rangediff de s’appliquer à un patch isolé

Lors de la soumission d'une version révisée d'un correctif ou d'une série, il peut être utile (aux réviseurs) d'inclure un résumé des modifications apportées depuis la tentative précédente sous la forme d'un interdiff, généralement dans la lettre d'accompagnement.
Cependant, il est parfois utile, malgré une lecture bruyante, d'insérer un interdiff ou un télémètre dans la section commentaire de l'unique patch d'une série à un patch.

Voir commit ee6cbf7 , commit 3fcc7a2 , commit 3b02641 , commit 5ac290f , commit 126facf , commit fa5b7ea (22 juil. 2018) par Eric Sunshine (sunshineco) .
(Fusion par Junio ​​C Hamano - gitster - in commit 688cb1c , 17 sept. 2018)

Par conséquent, élargissez "git format-patch --interdiff=<prev>" pour insérer un interdiff dans la section commentaire d'un patch isolé plutôt que de demander une lettre de motivation.
L’interdiffuseur est mis en retrait pour éviter de confondre git-am et les lecteurs humains en les considérant comme faisant partie du correctif proprement dit.

Voir commit 40ce416 , commit 8631bf1 , commit 4ee9968 , commit 2e6fd71 , commit 31e2617 , commit 73a834e , commit 2566865 , commit 87f1b2d (22 juil. 2018) de Eric Sunshine (sunshineco) .
(Fusionnée par Junio ​​C Hamano - gitster - in commit 881c019 , 17 septembre 2018)

Par conséquent, étendez "git format-patch --range-diff=<refspec>" pour insérer un range-diff dans la section commentaire d'un patch isolé plutôt que de demander une lettre de motivation.

1
VonC

Vous pourriez faire quelque chose comme:

 $ git checkout -b tmp 
 $ git reset HEAD ~ 2 
 $ git commit -a 

Le commit to branch tmp sera le même que les 2 commits individuels.

0
William Pursell