git am和git apply有什么区别?
git am
和git apply
都可以用来应用补丁。 我看不出有什么不同。 我现在看到了一个区别: git am
自动提交,而git apply
只git apply
触及文件但不创build提交。 这是唯一的区别吗?
input和输出都不同:
-
git apply
需要一个补丁(比如git diff
的输出)并将其应用到工作目录(或者索引,如果使用--index
或--cached
)。 -
git am
需要格式化为电子邮件的提交邮箱(例如git format-patch
的输出),并将它们应用到当前分支。
git am
使用git apply
在幕后应用 ,但是在阅读Maildir
或者mbox
以及parsing电子邮件之前和之后(创build提交)之前做更多的工作。
git apply
于直接git diff
(例如,从git diff
),而git am
则是用于从电子邮件(无论是mbox还是Maildir格式)应用补丁和补丁序列,并且是git format-patch
的“反面”。 git am
试图从电子邮件中提取提交消息和作者的详细信息,这就是为什么它可以提交。
使用git am
你可以应用这个补丁,所以如果你使用git status
你将不会看到任何本地的变化。
git apply
可以让你在源代码文件中进行更改,就像你自己编写代码一样,因此git status
和git diff
会输出你应用的补丁中所做的更改,然后你可以修改/添加更多的修改并提交他们在一起作为一个新的补丁。