在不执行合并的情况下,显示合并所做的更改需要使用什么git diff命令?

bttbmeg0  于 2023-04-19  发布在  Git
关注(0)|答案(1)|浏览(74)
  • 在不执行合并的情况下,显示合并所做的更改需要使用什么git diff命令?*

我做了搜索,没有找到我要找的东西。例如,我在分支feature/cool上,我运行git diff main。它显示了我在feature/cool上创建的所有新文件**,这些文件不是要合并的文件**。然而,这是两个分支之间的有效差异。
我已经看过如何用git merge来做这件事,看这个:

我承认git没有办法用git diff命令来做这件事,但是 * 我想 * 我在几天前找到了这个命令。

uurity8g

uurity8g1#

在合并之前 * 不可能知道合并之后**会发生什么变化,在所有情况下。也就是说,大多数情况下3 dot diff syntax会很接近:

git diff <target-branch>...<source-branch>

在以下任一情况下,3 dot diff将完全正确:
1.源分支与目标分支完全同步。
1.源分支不涉及任何与目标分支相同的文件,因为这两个分支的合并基。
当这两条规则不成立时,可能是相同的行在两边都被修改了(通常是由于樱桃挑选),然后在diff中显示的一些更改实际上不会被包含在合并中。

**旁注:**3 dot diff在大多数情况下都很有用,通常用作某些工具(例如GitHub和Azure DevOps)中Pull Requests的默认视图。
**建议:**如果你真的想知道会有什么变化,就去做看看吧:

git switch --detach <target-branch> # detach to avoid touching existing branches
git merge <source-branch> --no-ff # force a merge commit to prevent fast-forward
git diff @~1 @ # look at the difference between before and after the merge commit

相关问题