1076 votes

Créer un patch git à partir des modifications du répertoire de travail en cours

Dites que j'ai des modifications non validées dans mon répertoire de travail. Comment puis-je faire un patch de ceux sans avoir à créer un commit?

2224voto

jcarballo Points 1662

Si vous n’avez pas commis les modifications, puis :

Mais il arrive parfois que la partie des trucs que tu fais sont nouveaux fichiers untracked et ne sera pas dans la sortie « git diff ». Alors, comment faire un patch est mettre en scène tout un nouveau commit (mais ne fais pas la validation), puis :

Vous pouvez ensuite appliquer le patch :

493voto

sigjuice Points 9166

git diff pour les changements non planifiés. git diff --cached pour les changements par étapes.

98voto

Merlyn Morgan-Graham Points 31815

git diff et git apply de travail pour les fichiers texte, mais ne fonctionne pas pour les fichiers binaires.

Vous pouvez facilement créer un binaire complète patch, mais vous aurez à créer un temporaire de commettre. Une fois que vous avez fait votre temporaire commit(s), vous pouvez créer le patch avec:

git format-patch <options...>

Après vous avez fait le patch, exécutez cette commande:

git reset --mixed <SHA of commit *before* your working-changes commit(s)>

Cela permettra de restaurer votre mot de commit(s). Le résultat final laisse votre copie de travail (intentionnellement) sale avec les mêmes modifications que vous avait à l'origine.

Sur le côté de réception, vous pouvez utiliser la même astuce pour appliquer les modifications à la copie de travail, sans avoir la validation de l'histoire. Il suffit d'appliquer le patch(es), et l' git reset --mixed <SHA of commit *before* the patches>.

Notez que vous pourriez avoir à être bien synchronisés pour toute cette option fonctionne. J'ai vu quelques erreurs lors de l'application des correctifs lorsque la personne qui fait d'eux n'avait pas tiré vers le bas autant de modifications que j'ai eu. Il y a probablement des façons de le faire fonctionner, mais je n'ai pas regardé de loin en elle.


Voici comment créer des patches dans Tortoise Git (non pas que je recommande l'utilisation de cet outil):

  1. Validez vos changements de travail
  2. Cliquez-droit sur la branche répertoire racine et cliquez sur Tortoise Git -> Create Patch Serial
    1. Choisissez la gamme de sens (Since: FETCH_HEAD ne fonctionnera que si vous êtes bien synchronisés)
    2. Créer le patch(es)
  3. Cliquez-droit sur la branche répertoire racine et cliquez sur Tortise Git -> Show Log
  4. Cliquez-droit sur le commettre avant de les commettre(s), et cliquez sur reset "<branch>" to this...
  5. Sélectionnez l' Mixed option

Et comment les appliquer:

  1. Cliquez-droit sur la branche répertoire racine et cliquez sur Tortoise Git -> Apply Patch Serial
  2. Sélectionnez le patch(es) et de les appliquer
  3. Cliquez-droit sur la branche répertoire racine et cliquez sur Tortise Git -> Show Log
  4. Cliquez-droit sur le commettre avant le patch commit(s), et cliquez sur reset "<branch>" to this...
  5. Sélectionnez l' Mixed option

10voto

gitster Points 21

Si vous voulez faire binaire, donner une lorsque vous exécutez l’option .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X