获取Gi中两个分支之间的差异

我做了以下工作(与实际情况相比,我进行了简化):

  • 创建一个分支Branch1,切换到它
  • 添加文件File1和修改现有文件File2并提交
  • 弄清楚我不需要File1,将其删除并提交

因此,原始分支和Branch1之间的实际区别只是File2的修改。

我想得到分支之间的实际差异,并放入Branch2。 一般来说,我想摆脱不必要的添加/删除File1的历史记录。

Victor Ronin asked 2020-02-16T19:44:03Z
3个解决方案
114 votes

假设您从分支master开始。然后可以执行以下操作:

git diff master Branch1 > ../patchfile
git checkout Branch2    
git apply ../patchfile

或者,如果您的目标是重写历史记录,则可以使用交互式基础重新压缩提交。

Klas Mellbourn answered 2020-02-16T19:44:23Z
7 votes

这是一个简单的git diff

git diff --name-only SHA1 SHA2

SHA1 / 2是每个分支顶部的2个提交的哈希值。

或者你可以做

git diff --name-only develop...

将您的分支与develop分支进行比较

MaxK answered 2020-02-16T19:44:56Z
0 votes

我将在Branch2上进行交互式变基,并将最后两个提交一起压缩。 假设您想要保留Branch1中的历史记录并在Branch2中对其进行简化,请执行以下操作(当前分支Branch1):

git checkout -b Branch2
git rebase -i 'HEAD~2'

将打开一个编辑器,显示类似

pick 1b58da0 Added File1, changed File2
pick d3f4f51 Delete File1

以及许多解释性评论,说明了重新调整的工作原理。 将最后一次提交更改为Branch2,然后关闭编辑器。

pick 1b58da0 Added File1, changed File2
squash d3f4f51 Delete File1

将打开一个新的编辑器,您可以在其中指定新的提交消息。 现在大概会读

更改的文件2

关闭它,就完成了,两个提交都被压缩在Branch2上,并且Branch1保留了您的原始历史记录。 请注意,如果您不需要保留原始历史记录,则可以跳过检出Branch2并直接在Branch1上进行操作。仅当您尚未在Branch1上发布最后两个提交时,才可以这样做。

sebastian answered 2020-02-16T19:45:39Z
translate from https://stackoverflow.com:/questions/16675766/get-the-difference-between-two-branches-in-git