同一 GIT 分支的两次合并之间的区别

Difference between two merges of same GIT branch

假设我有一个远程仓库 XYZ 以及分支 TESTTEST1

我将遥控器 XYZ 拉到我的本地 XYZ 存储库并切换到分支 TEST1

我做了几次提交并推送到远程。然后我从TEST1合并到TEST(合并A).

我对 TEST1 做了更多的提交,并将它们推送到远程。然后我将所有这些提交合并到 TEST(合并 B)。

问题:

如何在分支 TEST 中找到差异并列出在这两个合并(合并 A 和合并 B)之间更改或添加的所有文件?

git diff --name-only ${MERGE_SHA_A}..${MERGE_SHA_B}

应该显示差异文件,没有 --name-only 如果这是你的意思,你会看到实际的差异

git log 

如果需要 ID,应该列出提交

找到第一个合并提交和第二个合并提交之前的提交,并将它们与 git diff <id1> <id2>

进行比较

根据您的解释,您的提交图在 GUI 中大致如下所示:

x1 ------ A ------- B     <-- TEST
 \       /         /
  y1 - y2 - y3 - y4       <-- TEST1

我的首选答案是使用 GUI select 提交并将它们发送到可视化差异工具,而不是使用命令行。

Git Extensions为例,

  • 通过右键单击顶行的 B 提交来签出 TEST,然后 selecting [Checkout Branch > TEST]
  • 然后右击A提交,select[比较>与当前分支比较]
  • 这将在您设置的任何差异工具中提取差异(例如 KDiff3,目前安装包附带)。无需复制或粘贴任何哈希等(尽管通过单击任何提交并查看屏幕下半部分的 "Commit" 选项卡,它们很容易获得)。

KDiff3 在左侧直观地向您显示每个修改、添加或删除的文件,您可以单击其中任何一个以在右侧查看确切的更改。

命令行工作正常 - 特别是当您已经知道哈希值时的小更改,或者您的存储库不复杂并且您可以快速找到它们,但我发现,平均而言,运行在后台使用 GUI 并切换到它来完成大多数任务,这对我来说是最好的工作流程。