恢复原来的合并后合并

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(使用前将#替换为@)

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

  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • Git:压缩 master 上提交的最简单方法[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 git 将最后 X 次提交压缩在一起 https stackoverflow com questions 5189560 how can i squash my last x commits
  • git Blame:合并后正确的作者

    GIT 合并引入了新的提交 这会导致 git Blame 问题 合并的行似乎是由进行合并的开发人员提交的 我可以理解这种情况冲突的变化 因为他解决了冲突 但是有没有办法让非冲突线路不发生这种情况呢 一些 git Blame 的选择 如果没有
  • 我在哪里? *(无分支)

    我已经熟悉了创建 合并和删除分支 我想知道我在哪里 这样我就不会将工作提交到错误的分支 我用git branch a看看我有哪些分支 我认为星号 显示我当前所在的分支 当我得到以下信息时 这意味着什么 no branch master or
  • Git post-receive - 如何检查推送的分支是否与主分支合并

    在我们的团队中 我们通常将所有任务推送到单独的分支中 然后发布经理审查这些分支并将它们合并到 主 分支中 有时团队成员忘记将他们的分支与主分支合并 在推送之前 所以我想做的是 在用户推送后输出一条消息 请与主分支合并 我想我需要检查一些内容
  • 从自己的 gitlab 服务器安装节点模块

    我想从我们的 gitlab 服务器安装节点模块 这是存储库的链接 http ABCD GITLAB myGroup myNodeModule git http ABCD GITLAB myGroup myNodeModule git 根据n
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • Heroku 应用程序上的 Nodejs Express EACCES 0.0.0.0:80

    我正在尝试在他们的网站上新创建的 Heroku 应用程序上运行 Node 应用程序 我按照他们的步骤操作 但在显示应用程序状态时仍然遇到错误 我跟着Node js 入门 https devcenter heroku com articles
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • VS Code 在交互式变基期间不会等待我 [重复]

    这个问题在这里已经有答案了 如果我使用交互式变基git rebase i使用为 Git 配置的默认编辑器 一切都运行良好 如果我在我的全局中添加以下内容 gitconfig core editor C Program Files x86 M
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • 为什么从网上下载Git 2.0,总是得到1.9.4的安装包?

    为什么从网上下载Git 2 0 总是得到1 9 4的安装包 为什么你不能在互联网上的任何地方找到一个不仅标记为 2 0 而且你下载的安装存档也标记为这样的 Git 安装程序包 例如 这个2 1 3 站点 http git scm com d
  • 如何使用 git 找到一个分支中但不在另一个分支中的所有提交?

    我有两个分行master and live Master是发展 分支并包含尚未准备好进入的提交live 如果在master需要进入的分支live树枝然后他们被樱桃采摘master to live 有时会做出承诺live分支然后是 樱桃摘入m

随机推荐

  • 具有动态分区的 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 中 因为我有两个文件之间的差异