【问题标题】:Difference between two merges of same GIT branch同一GIT分支的两次合并之间的区别
【发布时间】:2017-09-27 21:56:09
【问题描述】:

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

我将远程XYZ 拉到我的本地XYZ 存储库并切换到分支TEST1

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

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

问题:

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

【问题讨论】:

    标签: git github merge git-diff


    【解决方案1】:
    git diff --name-only ${MERGE_SHA_A}..${MERGE_SHA_B}
    

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

    git log 
    

    如果你需要 id,应该列出提交

    【讨论】:

    • 谢谢。我需要使用这些git log --merges -n 2 --format="%H"git diff --name-only ${MERGE_SHA_A} ${MERGE_SHA_B}
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      根据您的解释,这大致是您的提交图在 GUI 中的样子:

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

      我更喜欢的答案是使用 GUI 来选择提交并将它们发送到可视差异工具,而不是使用命令行。

      Git Extensions为例,

      • 通过右键单击顶行的 B 提交并选择 [Checkout Branch > TEST] 来签出 TEST
      • 然后右击A提交,选择[Compare > Compare with current branch]
      • 这将在您设置的任何差异工具中拉出差异(例如 KDiff3,目前与安装包一起提供)。无需复制或粘贴任何哈希值等(尽管通过单击任何提交并查看屏幕下半部分的“提交”选项卡很容易获得它们)。

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

      命令行运行良好 - 特别是对于您已经知道哈希值的小更改,或者您的存储库不复杂并且您能够快速找到它们,但我发现平均而言,在后台运行 GUI 并交换像这样的大多数任务对我来说是最好的工作流程。

      【讨论】:

        猜你喜欢
        • 2011-09-20
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 2017-12-23
        • 2016-12-08
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多