Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git am和git apply之间的区别是什么?_Git_Patch - Fatal编程技术网

git am和git apply之间的区别是什么?

git am和git apply之间的区别是什么?,git,patch,Git,Patch,git-am和git-apply都可以用于应用补丁程序。我看不出有什么区别。我现在看到了一个不同:git am自动提交,而git apply只涉及文件,而不创建提交。这是唯一的区别吗?使用git am应用补丁程序,这样当运行git status时,您不会看到任何本地更改,但是git log将显示补丁程序已提交到源代码 但是使用git apply时,您在源文件中进行更改,就像您自己编写代码一样,因此git status和git diff将输出您应用的补丁中出现的更改。因此,使用git-apply您

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

使用
git am
应用补丁程序,这样当运行
git status
时,您不会看到任何本地更改,但是
git log
将显示补丁程序已提交到源代码


但是使用
git apply
时,您在源文件中进行更改,就像您自己编写代码一样,因此
git status
git diff
将输出您应用的补丁中出现的更改。因此,使用
git-apply
您可以修复/添加更多更改,并
git-add
将它们作为一个新补丁一起添加。

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

输入和输出都不同:

  • 获取修补程序(例如的输出)并将其应用于工作目录(或索引,如果使用了
    --index
    --cached
  • 获取格式为电子邮件的提交邮箱(例如的输出),并将其应用于当前分支

,但在之前(阅读
Maildir
mbox
并解析电子邮件)和之后(创建提交)做更多的工作.

am
可以被认为是
Apply-Mail
的缩写。注意:
git-Apply
似乎也接受
git-format-patch
输出。
git-Apply
也适用于
git-format-patch
的输出,但更改将不过时,需要提交(从而在应用它们的索引中创建一个不同的提交点)。使用
git-am
您将把提交信息(连同作者等)带入应用到的索引中。
git-apply
然后用于修补您的repo(坏),
git-am
可以进行合法的功能更改并将其包含到您的repo中(首选方法)。