假设有两个基于master的分支x1和x2。git diff x1..x2显示了x1和x2之间的差异,但git format-patch x1..x2 -1 --stdout显示了master和x2之间的差异。有没有办法让format-patch来展示x1和x2之间的区别?
例如:
git branch x1 master
git branch x2 master
git switch x1
echo a >> README
git commit -a -m x1 # one extra line at x1
git switch x2
echo a >> README
echo a >> README
git commit -a -m x2 # 2 extra lines at x2
git diff x1..x2 # show one line betwen x1 and x2
git format-patch -1 --stdout x1..x2 # show 2 lines between master and x2如果我理解正确的话,git format-patch似乎只发出真正的提交(可以被隐藏),但它不会尝试计算interdiff。
发布于 2020-07-09 04:49:47
为什么两次提交之间的“git format-patch”与“git diff”不同?
对于这两个命令,..的解释是不同的。git diff正在寻找两个提交,git format-patch正在寻找一个或多个补丁系列。
他们都试图提供帮助,把你告诉他们的东西变成他们可以使用的东西。
git diff有效地忽略了这两个点。它在寻找两个提交,你给了它两个提交,那就是两个提交。当您考虑到它对三点语法也有自己的(非常有用和明智的)解释时,这可能就不那么令人费解了。
git format-patch正在寻找补丁系列,因此它使用了所有git rev-list-driven commmands中共享的更常见的点解释。
https://stackoverflow.com/questions/62795073
复制相似问题