在Git中获取两个分支之间的区别

Vic*_*nin 50 git

我做了以下(我简化了这与现实相比):

  • 创建了一个分支Branch1,切换到它
  • 添加了文件File1并修改了现有文件File2并提交了此文件
  • 想通了我不需要File1,删除它并提交了这个

因此,原始分支Branch1之间的实际差异仅是对File2的修改.

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

Kla*_*urn 118

我们假设你开始分支master.然后你可以这样做:

git diff master Branch1 > ../patchfile
git checkout Branch2    
git apply ../patchfile
Run Code Online (Sandbox Code Playgroud)

或者,如果您的目标是重写历史记录,那么您可以使用交互式rebase来压缩提交.

  • @sevenever 如果在交互式 rebase 中,他将两个提交压缩在一起,则 **File1** 的添加和删除将消失,只保留 **File2** 的修改。这样就能达到他想要的效果。 (3认同)
  • 作为附录,如果您使用的设置中 diff 自动着色,请将 `--no-color` 添加到 `diff` 以确保生成的补丁仍然有效。如果需要包含二进制文件,请添加“--binary”。 (2认同)

Max*_*axK 7

这是一个简单的git diff

git diff --name-only SHA1 SHA2
Run Code Online (Sandbox Code Playgroud)

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

或者你可以做到

git diff --name-only develop...
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为更正确的解决方案是“git diff SHA1 SHA2 >some.patch”,然后在新分支上“patch -p1 < some.patch” (3认同)