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?
Réponses
Trop de publicités?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 :
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):
- Validez vos changements de travail
- Cliquez-droit sur la branche répertoire racine et cliquez sur
Tortoise Git
->Create Patch Serial
- Choisissez la gamme de sens (
Since
:FETCH_HEAD
ne fonctionnera que si vous êtes bien synchronisés) - Créer le patch(es)
- Choisissez la gamme de sens (
- Cliquez-droit sur la branche répertoire racine et cliquez sur
Tortise Git
->Show Log
- Cliquez-droit sur le commettre avant de les commettre(s), et cliquez sur
reset "<branch>" to this...
- Sélectionnez l'
Mixed
option
Et comment les appliquer:
- Cliquez-droit sur la branche répertoire racine et cliquez sur
Tortoise Git
->Apply Patch Serial
- Sélectionnez le patch(es) et de les appliquer
- Cliquez-droit sur la branche répertoire racine et cliquez sur
Tortise Git
->Show Log
- Cliquez-droit sur le commettre avant le patch commit(s), et cliquez sur
reset "<branch>" to this...
- Sélectionnez l'
Mixed
option