Patch Git - explication détaillée de l'utilisation des différences et des patchs

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

 

Guess you like

Origin blog.csdn.net/wanglei_11/article/details/130768993