恢复原来的合并后合并

2024-01-10

好吧,当我将一些代码合并到存储库时,我不专心(某些代码的流程发生了重大变化),所以我不得不恢复合并提交。我回家了一天,现在 master 上有更多提交,我似乎无法触发合并,以便我可以将我的代码放入 master 中,因为我有两个文件之间的差异。我很笨拙,已经把代码推到了原点。

这是最近提交的单线图历史记录:

如何恢复正确的合并屏幕以便我可以处理它?

我想我可以向我的分支添加另一个提交,然后尝试合并它,但这感觉很黑客。


当提交代码然后在分支上恢复时,由于原始恢复,重新提交相同的代码将不会产生任何效果。例如,假设您在分支上有一个或多个提交B,然后用 commit 恢复它们R:

master
|
* R
|\
| * B

Merging B再次进入 master 不会有任何效果,因为 git 意识到恢复R发生了after所有提交B(即使B再次合并)。

这里有两种可能的解决方案。

恢复 恢复 恢复

一种是恢复恢复(将此称为提交R').

master
|
* R'
|
* R
|\
| * B

执行此操作的命令很简单。$ git revert R


重新调整分支基础

另一种可能的解决方案是rebase整个分行B所以它来了after回归R(调用重新定位的分支B')。这有一些不同的变体,但它们都依赖于用历史记录中不存在的新提交重写分支历史记录。R.

master
| 
* New merge commit
|\
| * B'
|  \
|   ...
* R
|\
| * B
| ...
|/
* A

rebase的命令如下:

$ git checkout B
$ git rebase --no-ff A

Linus 有一些好的评论 https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt有关此场景的更多阅读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

恢复原来的合并后合并 的相关文章

随机推荐

  • 具有动态分区的 CTAS

    我想将包含文本格式的现有表更改为 orc 格式 我能够通过以下方式做到这一点 1 手动创建一个orc格式的表并进行分区 然后 2 使用INSERT OVERWRITE 语句填充表 我正在尝试为此使用 CTAS 创建表 AS Select 语
  • 如何在Javascript中组合多个字典?

    var dictA male 10 female 20 unassigned 30 var dictB male 11 female 21 unassigned 31 var dictC male 12 female 22 unassign
  • 如何在 C# 中打开平板电脑模式屏幕键盘?

    我想使用代码启动新的屏幕键盘 OSK 您可以在任务栏中找到这个 如果没有 您可以通过右键单击任务栏找到它 我已经尝试过常规的 System Diagnostics Process Start osk exe 但我想启动另一个 不是在窗口模式
  • java netcdf 4 教程

    我在这里使用 unidata 网站上最新的 netcdf jar 库 http www unidata ucar edu downloads netcdf index jsp http www unidata ucar edu downlo
  • 访问类受保护字段而不修改原始类

    我正在使用一些公开某些类型的第三方库 由方法返回 这种类型有一些我感兴趣的受保护字段 但是我无法使用它们 因为它们的可见性是受保护的 这是问题的简化 public class A protected object Something pub
  • 提交后挂钩失败(退出代码 3)并输出

    我正在尝试使用提交后脚本远程调用 Jenkins 作业 我目前正在通过 Eclipse Kepler Subversive SVNKit Connector 提交代码 提交后脚本 if svnlook dirs changed r REV
  • const 指针固定为变量

    我不知道如何告诉 C 我想要一个不会移动的指针 它将始终指向同一个数组 也就是说 数组成员不是恒定的 但数组本身是全局的 因此它位于固定位置 所以 当我编码时 include
  • 在没有 .plist 文件的情况下使用适用于 iOS 的 Google Analytics

    根据 Google 的文档 iOS 分析 他们希望您下载一些自动生成的 plist 文件来配置您的应用程序 不幸的是 我有多个报告套件 调试 发布 需要根据构建动态切换 所以我正在尝试做两件事之一 有没有办法完全放弃 plist 文件并动态
  • 构造函数继承和自定义构造函数

    使用这个层次结构 struct TestBase Constructor TestBase TestBase int a TestBase TestBase const testBase Destructor virtual TestBas
  • 无法解析主要引用,因为它是针对比当前目标框架更高版本的 .NET 框架构建的

    我正在尝试构建一个引用第 3 方 SlingshotClient dll 的项目 该项目在其他开发人员工作站上构建良好 但是 我收到以下错误 我可以想象导致我的问题的一个差异是我的计算机上还安装了 VS 2012 和 NET Framewo
  • 对 .NET Framework 程序集的间接依赖

    所以我更新了我的 Telerik dll 将新的 dll 放在顶部 然后清理我的解决方案并重建 以产生以下错误 警告 3 无法解析主要引用 Telerik Windows Documents FormatProviders Xaml 因为它
  • setup.py 安装本地包

    如果我有一棵树 看起来像 project package init py setup py env setup py 有没有办法将嵌套的 setup py 包含在顶部 setup py 的安装中 我想避免这种情况 pip install e
  • 使用 Google Books API 的推荐结果不相关

    我正在尝试使用 Google Books API 构建书名推荐系统 不幸的是 我得到的结果与https books google com https books google com 例如 这是我通过单词 sher 搜索得到的列表 主要期待
  • 不断收到“无法找到支持 apt 的 Java 运行时。请访问 http://www.java.com 以获取有关安装 Java 的信息。” [复制]

    这个问题在这里已经有答案了 我正在尝试执行命令sudo apt install git nodejs npm curl但我不断收到一条错误消息 提示我没有安装 java 即使我安装了 我什至在他们的网站上安装了最新的jdk 但仍然遇到这个问
  • Heroku 始终运行 asset:precompile 与 Rails 3.2 的生产环境

    我将 Heroku 环境设置为暂存 但我的资产始终在生产环境中编译 Here s heroku config GEM PATH gt vendor bundle ruby 1 9 1 LANG gt en US UTF 8 PATH gt
  • 在 OpenCL 中,mem_fence() 与 Barrier() 相比有何作用?

    Unlike barrier 我想我明白 mem fence 不影响工作组中的所有项目 OpenCL 规范指出 第 6 11 10 节 对于mem fence 命令加载和存储执行内核的工作项 所以它适用于single工作项 但同时 在第 3
  • 如何从实例创建 Amazon EC2 AMI? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何从实例创建 EC2 AMI 好的 我得到了一个 EC2 帐户 我使用 Fedora 8 Apache MySQL PHP 启动了一个实例 我还配置
  • Java:定义术语初始化、声明和赋值

    我发现 defs 是循环的 主语是由动词定义的 但动词是未定义的 那么你如何定义它们呢 循环定义 初始化 初始化一个变量 可以在以下时间完成 宣言 任务 给变量赋值 它可以在任何地方完成 只需使用最终标识符一次 宣言 为变量声明值 更新 尝
  • 如何从类型安全配置中配置系统属性或 logback 配置变量?

    我的变量中有默认值logback xml配置文件 我希望能够从我的类型安全配置中选择设置这些变量application conf file 我正在使用 one jar 部署应用程序 并且application conf打包在可部署 jar
  • 恢复原来的合并后合并

    好吧 当我将一些代码合并到存储库时 我不专心 某些代码的流程发生了重大变化 所以我不得不恢复合并提交 我回家了一天 现在 master 上有更多提交 我似乎无法触发合并 以便我可以将我的代码放入 master 中 因为我有两个文件之间的差异