git - 当前分支与其远程分支之间的 Git diff 忽略从 master 合并的提交
问题描述
我可以使用它的远程分支来区分当前分支git diff branch remote-branch
但是如何忽略从主分支合并到远程分支的更改?
解决方案
该git diff
命令仅比较两个提交。1 提交是由其提交编号(其哈希 ID)索引的事物,用于存储快照和元数据。所以你运行git diff
并给它两个提交号,例如,git diff a123456 b789abc
. 或者,你给它两个分支名称,比如branch
and origin/branch
, or branch
and remote-branch
; Git 将这些名称转换为原始提交哈希 ID,然后执行相同的 diff。
所以:
...我如何忽略从主分支合并到远程分支的更改?
你不能。您将比较两个提交。
如果我们不比较以 name 命名branch
的提交与以 name 命名的提交remote-branch
,而是将第二个提交单独保留,但进行第一个提交并对其进行更改,以合并“从 master 合并的更改”,该怎么办。也就是说,我们:
- 创建一个新的(但临时的)分支,指向由 name 标识的提交
branch
,以便我们从与上一次提交的快照相同的快照开始 branchbranch
。 - 进行更改并进行新的提交。我们所做的更改使其与时俱进。
- 将此分支上的新提交与
remote-branch
.
如果这不合适,请考虑另一个明显的替代方案:保持按名称找到的提交不变,但branch
创建一个新的临时分支,该分支使用相同的快照开始- 实际上,相同的提交- 与remote-branch
然后进行一个新的提交,其中“从 master 合并的更改”被回滚(也许使用git revert
,它会做这种事情)。
这样,我们又回到了两个可比较的提交:其中一个是您之前要比较的提交,另一个是您要与之比较的提交,但有一些更改回滚。
这些方法并不完美,但它们与简单的 Git 命令和您描述的设置一样接近。 为了获得完美的比较,您必须确保从一remote-branch
开始就没有将这些更改纳入其中。
1这是不对的:它比较两个提交(彼此),或一个提交(与不是提交的东西)。它甚至可以比较两个未提交的东西,例如两个都在存储库之外的树。但这里的重点是,当您希望比较两个提交时,您必须已经拥有两个提交。
推荐阅读
- c# - 调试器在 JsonConvert.DeserializeObject 处停止
- android - 无法连接 GoPro HERO (2018) 相机。我无法找到能够连接相机并实际录制实时流的代码库
- javascript - 检查是否填写了必填字段
- sql - Postgresql - 按时间戳和 car_id 分组
- sql - sql - 从多个表中获取同一列的总和
- permissions - Artemis AMQ119213:用户:''没有权限='CONSUME'
- java - 设置重复 java - 从文件导入 - java
- angularjs - AngularJS 图表库
- wpf - MultiDataTrigger中的DataTrigger?
- java - 在 Spring Controller 中存储临时数据