Les deux git am
et git apply
peuvent être utilisés pour appliquer des correctifs. Je ne vois pas la différence. Je vois une différence maintenant: git am
valide automatiquement alors git apply
que touche uniquement les fichiers mais ne crée pas de validation. Est-ce la seule différence?
134
am
pourrait être considéré comme une abréviation deApply Mail
...Réponses:
L'entrée et la sortie sont différentes:
git apply
prend un patch (par exemple la sortie degit diff
) et l'applique au répertoire de travail (ou index, si--index
ou--cached
est utilisé).git am
prend une boîte aux lettres de commits formatés comme des messages électroniques (par exemple la sortie degit format-patch
) et les applique à la branche courante.git am
utilisegit apply
dans les coulisses , mais fait plus de travail avant (lecture d'unMaildir
oumbox
et analyse des e-mails) et après (création de commits).la source
git apply
semble également accepter lagit format-patch
sortie.git apply
fonctionnerait également pour la sortie degit format-patch
mais les modifications ne seraient pas mises en scène et devraient être validées (créant ainsi un point de validation différent dans l'index auquel elles sont appliquées). Avecgit am
vous, vous transporteriez les informations de validation (avec l'auteur, etc.) dans l'index auquel elles sont appliquées.git apply
puis est pour patcher votre repo (mauvais),git am
peut prendre des changements de fonctionnalités légitimes et les inclure dans votre repo (approche préférée).git apply
est pour appliquer des différences directes (par exemple à partir degit diff
) alors quegit am
c'est pour appliquer des correctifs et des séquences de correctifs à partir d'e-mails, au format mbox ou Maildir et est "l'opposé" degit format-patch
.git am
essaie d'extraire les messages de validation et les détails de l'auteur des messages électroniques, c'est pourquoi il peut effectuer des validations.la source
Avec
git am
vous appliquez le correctif si vous l'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équentgit status
etgit diff
affichera les modifications apportées dans le patch que vous avez appliqué, vous pouvez ensuite corriger / ajouter d'autres modifications et les soumettre ensemble comme un nouveau patch .la source