git am和git apply有什么区别?

时间:2012-09-02 22:10:54

标签: git patch

git amgit apply都可用于应用补丁。我没有看到差异。我现在看到了一个区别:git am自动提交,而git apply只触及文件但不创建提交。这是唯一的区别吗?

3 个答案:

答案 0 :(得分:109)

输入和输出都不同:

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

git am uses git apply behind the scenes,但之前做更多工作(阅读Maildirmbox,解析电子邮件)和之后(创建提交)。

答案 1 :(得分:15)

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

答案 2 :(得分:8)

使用git am您应用修补程序,因此如果您使用git status,则不会看到任何本地更改。

git apply使您可以在源文件中进行更改,就像您自己编写代码一样,因此git statusgit diff将输出您在补丁中所做的更改应用,然后您可以修复/添加更多更改并将它们作为一个新补丁一起提交。