git am和git apply有什么区别?

f87krz0w  于 2023-05-12  发布在  Git
关注(0)|答案(3)|浏览(364)

git amgit apply都可以用于应用补丁。我看不出有什么区别。我现在看到了不同:git am自动提交,而git apply只处理文件,但不创建提交。这是唯一的区别吗?

ifmq2ha2

ifmq2ha21#

输入和输出是不同的:

  • git apply采用补丁(例如git diff的输出),并将其应用于工作目录(或索引,如果使用--index--cached)。
  • git am将提交的邮箱格式化为电子邮件消息(例如,git format-patch的输出)并将它们应用于当前分支。

git am在幕后使用git apply,但在之前(阅读Maildirmbox,并解析电子邮件)和之后(创建提交)做更多的工作。

dddzy1tm

dddzy1tm2#

git apply用于应用直线差(例如来自git diff),而git am用于应用来自mbox或Maildir格式的电子邮件的补丁和补丁序列,并且是git format-patch的“相反”。git am尝试从电子邮件中提取提交消息和作者详细信息,这就是它可以提交的原因。

xuo3flqw

xuo3flqw3#

使用git am应用补丁,所以当您运行git status时,您不会看到任何本地更改,但git log将显示补丁已提交到源代码。
但是使用git apply,您在源文件中进行更改,就像您自己编写代码一样,因此git statusgit diff将输出您应用的补丁中出现的更改。因此,使用git apply,您可以修复/添加更多更改,并将git add作为一个新的补丁。

相关问题