首页 > 解决方案 > 当前分支与其远程分支之间的 Git diff 忽略从 master 合并的提交

问题描述

我可以使用它的远程分支来区分当前分支git diff branch remote-branch

但是如何忽略从主分支合并到远程分支的更改?

标签: gitdiff

解决方案


git diff命令仅比较两个提交1 提交由其提交编号(其哈希 ID)索引的事物,用于存储快照和元数据。所以你运行git diff并给它两个提交号,例如,git diff a123456 b789abc. 或者,你给它两个分支名称,比如branchand origin/branch, or branchand remote-branch; Git 将这些名称转换为原始提交哈希 ID,然后执行相同的 diff。

所以:

...我如何忽略从主分支合并到远程分支的更改?

你不能。您将比较两个提交

如果我们不比较以 name 命名branch的提交与以 name 命名的提交remote-branch,而是将第二个提交单独保留,但进行第一个提交并对其进行更改,以合并“从 master 合并的更改”,该怎么办。也就是说,我们:

  1. 创建一个的(但临时的)分支,指向由 name 标识的提交branch,以便我们从与上一次提交的快照相同的快照开始 branch branch
  2. 进行更改并进行新的提交。我们所做的更改使其与时俱进。
  3. 将此分支上的新提交与remote-branch.

如果这不合适,请考虑另一个明显的替代方案:保持按名称找到的提交不变,但branch创建一个新的临时分支,该分支使用相同的快照开始- 实际上,相同的提交- 与remote-branch然后进行一个新的提交,其中“从 master 合并的更改”被回滚(也许使用git revert,它会做这种事情)。

这样,我们又回到了两个可比较的提交:其中一个是您之前要比较的提交,另一个是您要与之比较的提交,但有一些更改回滚。

这些方法并不完美,但它们与简单的 Git 命令和您描述的设置一样接近。 为了获得完美的比较,您必须确保从一remote-branch开始就没有将这些更改纳入其中。


1这是不对的:它比较两个提交(彼此),或一个提交(与不是提交的东西)。它甚至可以比较两个未提交的东西,例如两个都在存储库之外的树。但这里的重点是,当您希望比较两个提交时,您必须已经拥有两个提交。


推荐阅读