web-dev-qa-db-fra.com

Quelle est la différence entre git am et git apply?

Tous les deux git am et git apply peut être utilisé pour appliquer des correctifs. Je ne vois pas la différence. Je vois une différence maintenant: git am valide automatiquement alors que git apply ne touche que les fichiers mais ne crée pas de commit. Est-ce la seule différence?

117
Christoph

L'entrée et la sortie sont différentes:

  • git apply prend un patch (par exemple, la sortie de git diff ) et l’applique au répertoire de travail (ou à l’index, si --index ou --cached est utilisé).
  • git am prend une boîte aux lettres d’envois formatée sous forme de messages électroniques (par exemple, le résultat de git format-patch ) et les applique à la branche actuelle.

git am les usages git apply dans les coulisses , mais fait plus de travail avant (lire un Maildir ou mbox et analyser les messages électroniques) et après (créer des commits).

116
georgebrock

git apply est destiné à l’application de différences droites (par exemple de git diff) tandis que git am sert à appliquer des correctifs et des séquences de correctifs à partir de courriels, en format mbox ou Maildir, et constitue le "contraire" de git format-patch. git am tente d'extraire les messages de validation et les détails de l'auteur des e-mails, raison pour laquelle il peut effectuer des validations.

16
CB Bailey

Avec git am vous appliquez le correctif, donc si vous utilisez git status vous ne verrez aucun changement local.

git apply vous permet d’effectuer les modifications dans les fichiers source comme si vous écriviez le code vous-même, par conséquent git status et git diff affichera les modifications apportées au correctif que vous avez appliqué. Vous pourrez ensuite corriger/ajouter d'autres modifications et les soumettre en un seul.

8
0x90