git am和 git apply都可以用来应用补丁。我看不出有什么区别。我现在看到了一个区别: git am自动提交,而 git apply只触及文件,但不创建提交。这是唯一的区别吗?
git am
git apply
使用 git am时,您应用了补丁,因此当您运行 git status时,您不会看到任何本地更改,但是 git log将显示补丁已提交给源代码。
git status
git log
但是对于 git apply,您可以在源文件中进行更改,就像您自己编写代码一样,因此 git status和 git diff将输出您应用的补丁中出现的更改。因此,使用 git apply,您可以修复/添加更多的更改和 git add作为一个单一的新补丁他们在一起。
git diff
git add
git apply是应用直差(例如从 git diff) ,而 git am是应用补丁和补丁序列从电子邮件,无论是 mbox 或 Maildir 格式,是“相反”的 git format-patch。git am尝试从电子邮件中提取提交消息和作者详细信息,这就是为什么它可以进行提交。
git format-patch
输入和输出都是不同的:
--index
--cached
git am在后台使用 git apply ,但在前面(阅读 Maildir或 mbox,解析电子邮件消息)和后面(创建提交)做更多的工作。
Maildir
mbox