git: Patch ne dispose pas d'une adresse e-mail valide
J'ai un patch-fichier.
Je veux appliquer ce correctif à mon code dans le dépôt git.
Lorsque j'ai utilisé la subversion ce processus a été très simple: clic droit -> tortoise svn -> appliquer le correctif. Il fonctionne toujours comme je m'y attendais.
Mais je ne peux pas faire cela à l'aide de git. Git ne s'applique pas mon patch. Il se plaint de
Patch ne dispose pas d'une adresse e-mail valide.
Donc, ma question est:
"Comment appliquer le patch fichier dans cette situation?"
OriginalL'auteur tmporaries | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
Git créé des parcelles sont destinées à être appliquées avec Git outils. Utilisation
Si le patch n'est pas créé avec Git, alors il suffit d'utiliser un patch programme "derrière le dos" de Git. Souvent c'est le programme "patch":
Après l'application du patch, d'ajouter et de s'engager dans Git, comme d'habitude.
Avez-vous créer le patch avec Git?
Pas de. C'est un "unifiée" patch format généré par tortue visualisateur.
Voir mise à jour de la réponse; appliquer le patch "derrière le dos" de Git.
OriginalL'auteur GoZoner
Cela fonctionne avec mbox fichiers téléchargés à partir de pipermail utilisé par de nombreux projets open source. C'est probablement ce qui ne fonctionne pas dans le cas des OP cas, mais le même problème/question les résultats lors de l'utilisation de
git am
avec pipermail messages extraits/patches.Faire une copie de sauvegarde du fichier et le modifier pour ajouter une ligne,
Souvent, la ligne existe déjà, mais anti-spam peuvent avoir converti le
@
signe le texte à. Vous pouvez insérer un tas de fichiers avec un gnused
commande comme,Ce, remplace simplement " à " avec la
@
signe. Après cela,git am
doit l'accepter.Si vous avez accès à git, vous pouvez utilisez les commandes,
git checkout oldbranch
git format-patch HEAD~4
Cela va faire quatre fichiers sont des taches de la dernière modification (changement du nombre de cas).git checkout master
git am *.patch
Vous obtenez le même commettre des id, des messages, etc, comme le dépôt distant qui peut être utile par la suite.
Des outils comme gitk et kdiff ne PAS générer les mêmes données que format-patch et vous n'obtenez pas la validation de l'histoire. Si vous avez ce type de données, vous devez utiliser
git apply
ou de générer des correctifs ci-dessus.Voir: Différence entre git format-patch et git diff.
J'ai mon local repo, dans lequel certains le code source a été copié il y a un an de projet à l'étranger. En attendant que le projet a été mis à jour, ainsi que mon local repo. Je veux intégrer étrangères améliorations. J'ai fait un patch de modifications apportées au projet à l'étranger par copie de la version la plus récente dans la vieille branche et montrant toutes les différences. Je n'ai toujours pas trouvé un outil qui permettra d'appliquer ce mode diff unifié à mon local repo.
Je l'ai enfin fait avec kdiff3, mais de ne pas utiliser le patch que j'ai créé précédemment.
OriginalL'auteur artless noise
Si c'est plus utile pour vous d'utiliser une interface graphique au lieu de la ligne de commande, il existe assez peu d'outils qui font qu'il est relativement simple de faire beaucoup de choses dans Git, y compris d'appliquer des correctifs). Le plus utile que j'ai trouvé est SourceTree, mais je suis sûr qu'il ya d'autres bons là-bas si vous recherche.
OriginalL'auteur Wesley Bland
Il est possible d'avoir cette erreur si votre message de commit a une ligne qui commence avec
From:
. Par exemple, j'ai eu un patch où j'ai corrigé une faute de frappe, et dans le corps du message de commit, j'ai eu:L' .fichier de patch, généré par format-patch avait deux
From:
lignes, dont l'adresse e-mail, et de l'autre a été mon mauvais message. Git am était la cueillette jusqu'à la deuxièmeFrom:
ligne et d'essayer de trouver l'adresse e-mail.La solution était de changer le message de validation de ne pas avoir
From:
au début d'une ligne.OriginalL'auteur anon-giraffe