J'ai essayé de faire
git diff 13.1_dev sale_edit > patch.diff
Ensuite, j'ai essayé de faire git apply patch.diff
dans une autre branche, mais j'ai obtenu le patch ne s'applique pas. Comment créer des fichiers de correctifs à partir de différences que je peux utiliser avec git apply?
Erreurs reçues:
$ git apply --ignore-space-change --ignore-whitespace diff.diff
diff.diff:9: trailing whitespace.
diff.diff:10: trailing whitespace.
function set_change_sale_date()
diff.diff:12: space before tab in indent.
$this->sale_lib->set_change_sale_date($this->input->post('change_sale_date'));
diff.diff:14: trailing whitespace.
diff.diff:15: trailing whitespace.
function set_change_sale_date_enable()
warning: application/controllers/sales.php has type 100755, expected 100644
error: patch failed: application/controllers/sales.php:520
error: application/controllers/sales.php: patch does not apply
warning: application/language/english/sales_lang.php has type 100755, expected 100644
error: patch failed: application/language/english/sales_lang.php:134
error: application/language/english/sales_lang.php: patch does not apply
warning: application/libraries/Sale_lib.php has type 100755, expected 100644
error: patch failed: application/models/sale.php:170
error: application/models/sale.php: patch does not apply
warning: application/views/sales/register.php has type 100755, expected 100644
error: patch failed: application/views/sales/register.php:361
error: application/views/sales/register.php: patch does not apply
J'essaye ça sur Mac
Essayez un:
git apply --ignore-space-change --ignore-whitespace patch.diff
Comme mentionné dans " git: le patch ne s'applique pas ", cela peut être dû à:
core.eol
dans .gitattributes
le fichier est une bonne approche (voir " git forcer l'encodage du fichier lors de la validation ")x
').git config core.filemode false
, suivi d'un git reset --hard HEAD
(assurez-vous que vous n'avez pas de modifications non validées, sinon elles seraient perdues).Vous pouvez appliquer le patch comme une fusion à 3 voies:
git diff 13.1_dev sale_edit > patch.diff
git apply -3 patch.diff
Il devrait faire apparaître le conflit afin que vous puissiez le résoudre manuellement. Ou vous pouvez aller avec une doublure, en passant le patch à appliquer directement:
git diff 13.1_dev sale_edit | git apply -3
Pour inverser le patch:
git diff 13.1_dev sale_edit | git apply -3 -R
(remarque: c'est la même chose que les commandes ci-dessus, sans le processus en deux étapes de création du fichier de patch)
git help apply
-3, --3way
When the patch does not apply cleanly, fall back on 3-way merge if
the patch records the identity of blobs it is supposed to apply to,
and we have those blobs available locally, possibly leaving
the conflict markers in the files in the working tree for the user
to resolve...
Ici, vous devez l'essayer avec la branche avec laquelle vous avez diff.
git diff 13.1_dev sale_edit > patch.diff yourBranch()
Avec la version 1.9.1 de git, je vois des plaintes similaires lorsque j'utilise 'git apply' pour appliquer le correctif créé à l'aide de 'git diff'.
Il semble que 1.9.1 git ait des problèmes avec le mélange des espaces et des tabulations dans le fichier patch.
warning: squelched 1 whitespace error warning: 6 lines add whitespace errors.
@ La réponse de VonC n'aide pas et je reçois toujours les mêmes avertissements.
La solution la plus simple consiste à simplement utiliser la commande 'patch' qui applique avec succès toutes les modifications capturées dans la sortie 'git diff' au répertoire git cible.
$ patch --version GNU patch 2.7.1