两者git am
都git apply
可以用于应用补丁。我看不出有什么区别。我现在看到了一个不同之处:git am
自动提交,而git apply
只触及文件但不创建提交。这是唯一的区别吗?
问问题
93444 次
3 回答
192
输入和输出都不一样:
git apply
获取一个补丁(例如 的输出git diff
)并将其应用于工作目录(或索引,如果使用--index
或--cached
)。git am
接受格式化为电子邮件消息的提交邮箱(例如 的输出git format-patch
)并将它们应用于当前分支。
git am
git apply
在幕后使用,但在之前(读取Maildir
ormbox
和解析电子邮件)和之后(创建提交)做更多的工作。
于 2012-09-02T22:23:10.293 回答
25
git apply
用于应用直接差异(例如 from git diff
),而git am
用于从电子邮件应用补丁和补丁序列,mbox 或 Maildir 格式,并且是git format-patch
. git am
尝试从电子邮件中提取提交消息和作者详细信息,这就是它可以进行提交的原因。
于 2012-09-02T22:21:01.753 回答
15
随着git am
您应用补丁,因此当您运行时git status
您不会看到任何本地更改,但git log
会显示补丁已提交到源代码。
但是,git apply
您在源文件中进行更改,就好像您自己编写代码一样,因此git status
将git diff
输出您应用的补丁中出现的更改。因此,git apply
您可以修复/添加更多更改,并将git add
它们一起作为一个新补丁。
于 2012-09-02T22:20:31.413 回答