'diff -b'命令和'git diff'命令之间的区别

9

我一直使用diff -b来制作补丁,即使在使用git repo时也是如此。

  1. 这两者之间有什么区别,git diff/git format-patch是否也内部使用了linux/unix的diff命令?(我知道git diff/git format-patch的区别)
  2. 此外,使用patch -p1进行修补与使用git apply有何不同。我能否使用由diff -b生成的补丁,并使用git diff进行应用?
  3. 在使用git时,使用git diff/apply是一个好习惯吗?我一直在使用diff/patch,从未遇到过任何问题。

如果我上述所提到的内容的理解不够充分,请纠正我。


跨站点重复 https://unix.stackexchange.com/questions/356652/is-git-diff-related-to-diff/598031#598031 还请查看我的答案 https://unix.stackexchange.com/a/598031/171025 - qwr
1个回答

9

按顺序:

  1. Git有自己内置的差异比较工具,但是如果使用正确的选项,两者的输出结果非常相似。使用内置的diff和git diff前端可以获得更多的自动化,而且输出结果总是适合于git apply或git am的格式。简而言之,它更加方便。

  2. 我曾经尝试过这种方法(将git diff输出传输给patch或者将纯粹的diff输出传输给git apply)。虽然它能够工作,但是偶尔需要在某些地方进行编辑以使其正常运行,这很烦人。如果我想要git apply或git am一个补丁,那么通过获取一个git diff会更加方便。一般来说,最大的可观测区别是git apply默认不执行部分应用:您必须添加--reject选项才能使其像patch的默认设置一样运行。(另外,所有那些.orig文件......)

  3. 是的,因为上述方便性。当您进一步使用git format-patch和git am时,您可以批量应用整个系列的补丁,保留提交消息包括作者信息等,并自动提交所有内容。


谢谢你,torek!说得很好。 - brokenfoot
2
顺带一提,我已经尝试了混搭的方法:不用 git apply --reject,而是使用 patch 进行应用。有时候高功率电动螺丝刀似乎有些大材小用,我会使用手动的。 :-) - torek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接