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

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

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

    Si vous n’avez pas encore engagé les modifications, alors:

     git diff > mypatch.patch 

    Mais il arrive parfois qu’une partie de ce que vous faites soit de nouveaux fichiers qui ne sont pas suivis et qui ne seront pas dans votre sortie git diff . Ainsi, une façon de faire un patch consiste à tout mettre en scène pour un nouveau commit (mais ne le faites pas), puis:

     git diff --cached > mypatch.patch 

    Ajoutez l’option ‘binary’ si vous voulez append des fichiers binarys au patch (ex: fichiers mp3):

     git diff --cached --binary > mypatch.patch 

    Vous pouvez ensuite appliquer le patch:

     git apply mypatch.patch 

    git diff et git apply fonctionneront pour les fichiers texte, mais ne fonctionneront pas pour les fichiers binarys.

    Vous pouvez facilement créer un patch binary complet, mais vous devrez créer un commit temporaire. Une fois vos validations temporaires effectuées, vous pouvez créer le patch avec:

     git format-patch  

    Après avoir créé le correctif, exécutez cette commande:

     git reset --mixed  

    Cela annulera vos engagements temporaires. Le résultat final laisse votre copie de travail (intentionnellement) sale avec les mêmes modifications que vous aviez à l’origine.

    Du côté de la réception, vous pouvez utiliser le même truc pour appliquer les modifications à la copie de travail sans avoir l’historique des validations. Appliquez simplement le ou les patch (s) et git reset --mixed .

    Notez que vous devrez peut-être être bien synchronisé pour que toute cette option fonctionne. J’ai vu des erreurs lors de l’application de patchs lorsque la personne qui les réalisait n’avait pas réduit autant de changements que j’avais. Il y a probablement des moyens de le faire fonctionner, mais je ne l’ai pas beaucoup regardé.


    Voici comment créer les mêmes correctifs dans Tortoise Git (ce n’est pas ce que je recommande d’utiliser cet outil):

    1. Engagez vos changements de travail
    2. Cliquez avec le bouton droit sur le répertoire racine de la twig et cliquez sur Tortoise Git -> Create Patch Serial
      1. Choisissez la plage qui FETCH_HEAD ( Since : FETCH_HEAD fonctionnera si vous êtes bien synchronisé)
      2. Créez le ou les correctifs
    3. Faites un clic droit sur le répertoire racine de la twig et cliquez sur Tortise Git -> Show Log
    4. Cliquez avec le bouton droit sur la validation avant vos validations temporaires, puis cliquez sur reset "" to this...
    5. Sélectionnez l’option Mixed

    Et comment les appliquer:

    1. Faites un clic droit sur le répertoire racine de la twig et cliquez sur Tortoise Git -> Apply Patch Serial
    2. Sélectionnez le ou les correctifs corrects et appliquez-les
    3. Faites un clic droit sur le répertoire racine de la twig et cliquez sur Tortise Git -> Show Log
    4. Cliquez avec le bouton droit sur la validation avant les validations du patch, puis cliquez sur reset "" to this...
    5. Sélectionnez l’option Mixed

    Pour créer un patch avec à la fois les fichiers modifiés et les nouveaux fichiers (mis en scène), vous pouvez exécuter:

     git diff HEAD > file_name.patch 

    Si vous voulez faire du binary, donnez une option --binary lorsque vous exécutez git diff .