164 votes

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

Les deux sites git am y git apply peut être utilisé pour appliquer des correctifs. Je ne vois pas la différence. Je vois une différence maintenant : git am commet automatiquement alors que git apply ne fait que toucher les fichiers mais ne crée pas de commit. Est-ce la seule différence ?

15 votes

am pourrait être considéré comme une abréviation de Apply Mail ...

179voto

georgebrock Points 9582

L'entrée et la sortie sont toutes deux 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 la commande --index o --cached est utilisé).
  • git am prend une boîte aux lettres de commits formatés comme des messages électroniques (par exemple, la sortie de git format-patch ) et les applique à la branche courante.

git am utilise git apply derrière les coulisses mais fait plus de travail avant (lecture d'un Maildir o mbox et l'analyse des messages électroniques) et après (création de commits).

6 votes

Note : git apply semble également accepter git format-patch sortie.

13 votes

git apply fonctionnerait pour les sorties de git format-patch mais les modifications ne seront pas indexées et devront être validées (créant ainsi un point de validation différent dans l'index auquel elles sont appliquées). Avec git am vous reporteriez les informations de commit (avec l'auteur, etc.) dans l'index auquel il est appliqué. git apply puis est pour Parcheando votre repo (mauvais), git am peut prendre les changements de fonctionnalités légitimes et les inclure dans votre repo (approche préférée).

21voto

Charles Bailey Points 244082

git apply sert à appliquer des différences directes (par exemple de git diff ) alors que git am sert à appliquer des correctifs et des séquences de correctifs à partir de courriels, au format mbox ou Maildir, et est le "contraire" de git format-patch . git am essaie d'extraire les messages de commit et les détails de l'auteur à partir des messages électroniques, ce qui explique pourquoi il peut faire des commits.

13voto

0x90 Points 8193

Avec git am vous appliquez le patch de sorte que lorsque vous exécutez git status vous ne verrez pas de changements locaux, mais git log montrera que le patch a été intégré au code source.

Mais avec git apply vous effectuez les modifications dans les fichiers source comme si vous écriviez le code vous-même, par conséquent git status y git diff affichera les changements apparus dans le patch que vous avez appliqué. Ainsi, avec git apply vous pouvez corriger/ajoutez d'autres changements et git add les rassembler en un seul nouveau patch.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X