1. La différence entre diff et patch
Git fournit deux schémas de patch, l'un est le fichier .diff généré par git diff, et l'autre est le fichier .patch généré par git format-patch.
Le fichier généré par git diff ne contient pas d'informations de commit, vous pouvez spécifier un fichier pour générer diff, ou vous pouvez spécifier un seul commit pour générer plusieurs commits.
Le fichier .patch généré par git format-patch contient des informations de validation. Un commit correspond à un fichier patch.
2. Générer le patch
1. git diff
(1) Spécifiez le fichier pour générer le fichier de patch
git diff <filename> > test.patch 或 test.diff
Par exemple, si nous modifions les fichiers Test.java et Test1.java, nous voulons uniquement patcher le fichier Test.java, alors nous pouvons utiliser la commande suivante
git diff Test.java > test.patch
Si vous souhaitez patcher tous les fichiers modifiés, c'est-à-dire les fichiers Test.java, Test1.java, il vous suffit d'utiliser la commande suivante
git diff > test.patch
(2) Spécifiez l'ID de validation pour générer le correctif
en utilisant la ligne de commande
git diff [commit id 1] [commit id 2] > nom du fichier patch/diff
2. git format-patch
tous les commits avant master dans la branche actuelle :
git format-patch -M maître
Tous les correctifs après une certaine soumission :
git format-patch [identifiant de validation]
[commit id] fait référence à l'identifiant de validation, qui peut être consulté via git log.
Tous les correctifs de la racine au commit spécifié :
git format-patch --root [identifiant de validation]
Tous les correctifs entre deux commits :
git format-patch [identifiant de validation 1]..[identifiant de validation 2]
par exemple git format-patch 365a..4e16 //–365a et 4e16 correspondent respectivement à l'identifiant de validation des deux soumissions
Plusieurs commits avant (y compris) un commit :
git format-patch –n [identifiant de validation]
–n fait référence au nombre de patchs,
Générez un fichier de correctif pour un commit :
git format-patch -1 [identifiant de validation]
Les fichiers correctifs générés par git format-patch sont numérotés séquentiellement à partir de 1 par défaut, et utilisent la première ligne dans les informations de soumission correspondantes comme nom de fichier. Si l'option --numbered-files est utilisée, le nom du fichier n'a qu'un numéro et ne contient pas d'informations de soumission ; si l'option --stdout est spécifiée, l'emplacement de sortie peut être spécifié, par exemple lorsque tous les patchs sont sortis vers un fichier ; il peut être spécifié par -o <dir> Le répertoire de stockage du correctif.
git format-correctif -3
Le processus est, comparer HEAD avec HEAD^, générer 0003.xxx.patch, comparer HEAD^ avec HEAD^^, générer 0002.xxx.patch, comparer HEAD^^ avec HEAD^^^, générer 0003. xxx.patch
Lorsque git am, vous pouvez procéder de petit à grand, ou vous pouvez git am path/*.patch (git am passera automatiquement de petit à grand)
3. Appliquez le patch
1. Vérifiez le fichier patch/diff :
git apply --stat xxx.patch
Vérifiez si l'application est réussie
git apply --check xxx.patch/xxx.diff
2. Patch :
Pour le patch généré par git diff :
git appliquer xxx.patch/xxx.diff
Pour les correctifs générés par git format-patch :
git suis xxx.patch
4.
Méthodes de résolution de conflits pour localiser et résoudre les conflits git am - Programmeur recherché
5. Autres
1. Différence et application lorsque les fichiers binaires sont inclus
git diff HEAD^..HEAD --binary > foobar.patch
https://cloud.tencent.com/developer/article/1423939
https://www.jianshu.com/p/ec04de3f95cc