git - 通过硬重置回在合并中获得的提交来擦除合并提交?
问题描述
我合并前的历史看起来像A -> B -> C
我正在合并的分支看起来像A -> B -> C -> D -> E
,即分支与我的历史相同,但有两个新提交
我只是想要这两个提交,所以我将该分支合并到我的。合并后,我的分支看起来像 A -> B -> C -> D -> E -> F
,其中 F 是合并提交。
我不想在我的历史记录中合并提交 F,所以我硬重置回提交 E ...
等等,什么?
我通过硬重置回在合并提交中获得的提交删除了合并提交...?那可能吗?我认为合并提交本身就是应用您从合并中获得的任何新提交的东西,所以如果您撤消合并提交(就像我所做的那样),那么您将失去合并提交所做的一切,即您将失去所有通过合并获得的提交。
这不是合并提交的工作方式吗?
解决方案
如果您的 repo 已merge.ff
设置false
,或者如果您--no-ff
以其他方式指定合并,Git 将记录合并,即使在此处并非绝对必要时也是如此。
你必须
A---B---C-------F master
\ /
D---E
其中F
内容与内容相同E
。有时你想要这样,例如在生产历史中,将实际投入生产的内容记录为这样的一系列合并通常很方便,任何了解惯例的人都可以看到D
从未投入生产,这是系列。
因此,当您删除git reset --hard
合并E
的记录时,您完全没有更改内容,而生成的历史正是快进合并所获得的。
推荐阅读
- node.js - 如何从颤振发送 url 参数
- mongodb - mongoose 从 mongodb 获取所有数据库条目
- reporting-services - SSRS 报告基于其他参数的参数设置值
- c# - 在 for 循环 C# 中跳过一系列值
- ios - 如何从结构视图数组中提取状态?SwiftUI
- angular - 带有 Angular 9 的摩纳哥编辑器不显示
- java - 从 jdk8 中的脚本管理器返回值
- php - 我提出了一个 CURL 请求,但它不工作
- date - 日期格式不一致的 VBA 插入语句中的 DateAdd 的 MS Access 问题
- machine-learning - 为什么我们需要在 dropout 期间保留“预期输出”?