将 merge 转换为 rebase,无需再次执行 merge

2024-01-06

我犯了一个错误:我应该使用git pull --rebase,但我发布了一个简单的git pull,合并了所有内容,现在在我的分支的头部有一个合并提交。

我想摆脱那个合并提交,我想我只需发出一个git rebase -i HEAD~3,将我的最后一个本地提交移动到顶部并将合并提交压缩到其中。唉,合并提交不可用于压缩。如果我这样做,我会进入中间状态,需要再次进行合并,这是一个lot工作的。

有没有办法解决这个问题而不必再次执行合并?似乎应该可以以某种方式使用合并提交?


tl;dr

即使您可以在变基中包含合并提交,您也无法压缩合并提交。 Git 会告诉你:

拒绝压缩合并:

你什么can为了保留合并期间所做的更改,要做的是将合并提交转换为普通提交。那时你可以像任何其他提交一样压缩它。

假设HEAD指向合并提交:

git reset --soft HEAD~1  # Keeps changes in the index
git commit               # Create a new commit, this time not a merge commit
git rebase -i HEAD~4     # Do an interactive rebase and squash the new commit

在变基期间保留合并提交

一般来说,您可以在执行变基操作时保留合并提交git rebase -p.
然而,其目的是重播导致合并的提交。合并提交本身的任何更改(例如冲突解决方案)都不会保留。

这是来自文档 https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html:

-p
--保留合并
重新创建合并提交,而不是通过重播合并提交引入的提交来展平历史记录。合并冲突 不会保留对合并提交的决议或手动修改。
这使用了--interactive内部有机械,但将其组合起来 与--interactive显式选项通常不是一个好主意 除非你知道自己在做什么(参见下面的错误)

The bug https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html#_bugs文档所指的是通过重新排序提交触发的。

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

将 merge 转换为 rebase,无需再次执行 merge 的相关文章

  • Git 在推送代码时返回错误 403 [重复]

    这个问题在这里已经有答案了 一切都工作正常 直到我创建了一个新的 GitHub 帐户 当我尝试使用新帐户第一次将代码推送到 github 服务器时 出现以下错误 remote Permission to NEW USER NEW REPO
  • hg 或 git 中的两个完整目录/项目之间存在差异?

    我继承了一个最初存储在 CVS 中的项目以及所有修订 我做了相当多的编辑 并且我试图比较我在原始目录中所做的所有更改 关于添加的新文件与旧文件 hg git 是否有某种实用程序可以让我进行树差异或类似性质的操作 也就是说 新添加的文件 删除
  • RuntimeError:模型类 django_messages.models.Message 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

    我正在尝试使用https github com arneb django messages https github com arneb django messages打包我的消息传递内容并尝试了以下操作 pip install git h
  • 当出现错误时如何删除远程分支?

    我尝试过以下命令 但失败了 git push origin next remote error denying ref deletion for refs heads next To blah git remote rejected nex
  • 如何通过哈希显示提交的日期和时间

    I used git reflog识别我创建特定分支时的哈希值 我得到了哈希值fe1ddcdef 我还没有将此分支推送到远程 我现在正在尝试查找日期和时间fe1ddcdef发生 git reflog只告诉我 fe1ddcdef HEAD 1
  • 有人熟悉 git 错误“缺少对象 0000000000000000000000000000000000000000 for refs/heads/...”吗?

    我们正在运行 git v1 7 1 并配置了 gitweb 我们也使用 gitolite 进行管理 但我不认为这与这个问题有密切关系 有时我们会在 Apache 日志中收到如下错误 missing object 00000000000000
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 无法从我的电脑上使用 traefik 后面的 gitlab 进行 git 克隆

    这是我的 gitlab 和 traefik 配置 version 3 7 services gitlab web image gitlab gitlab ce latest restart always hostname gitlab ro
  • TeamCity 将功能分支推送到主分支

    有没有办法将成功构建的功能分支推送到另一个分支 我想要这样的东西 Git 存储库 Gitorious GitHub 等 分支机构 master 当前项目的代码 质量保证 代码等待 QA 的分支 功能分支 许多远程分支 开发人员可以在其中开发
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • 是否可以在 git 存储库之外添加和提交文件?

    我们的文本文件分布在系统的各个角落 我们计划将这些文件中所做的所有修改添加到 git 存储库中 每次对这些文件进行修改都是由脚本进行的 因此 我们计划向该脚本添加新命令 以将文件添加到 git 存储库 但是 这些修改是同时进行的 我们可以为
  • git Blame:合并后正确的作者

    GIT 合并引入了新的提交 这会导致 git Blame 问题 合并的行似乎是由进行合并的开发人员提交的 我可以理解这种情况冲突的变化 因为他解决了冲突 但是有没有办法让非冲突线路不发生这种情况呢 一些 git Blame 的选择 如果没有
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • git 如何查找分支源自的提交哈希

    假设我从主分支分支到主题分支 然后在主题分支上进行了一些提交 是否有命令告诉我主题分支源自的主分支上的提交哈希 理想情况下 我不必知道我做了多少次提交 试图避免 HEAD 5 我已经用谷歌搜索过 但似乎无法找到答案 谢谢 use git m
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf

随机推荐

  • 每个配置文件中的部分只能出现一次

    所以昨天这段代码工作得很好 今天当我们去运行该网站时 我们收到了这个配置错误 我浏览了提出的其他问题 尽管它们很有帮助 但我无法确定我在哪里重复了某个部分 Here is my error http img photobucket com
  • 如何调整 Bootstrap 3 内联表单宽度?

    我有一个依赖 Bootstrap 3 的表单 完整的工作示例 http jsfiddle net x7vk7 2 http jsfiddle net x7vk7 2 要点是我有两列内容 第一列是col lg 4 第二个是col lg 8 第
  • Beyond Compare - 自动合并工作副本中的“冲突”文件(如果可能)

    我最近在 Git 中合并了两个分支 它们都开发了太长时间 因此两个分支上都有很多文件被更改 因此 Git 将它们标记为 冲突 一旦我在 Beyond Compare 中打开它们 就 不再有冲突 因为它足够聪明 可以解决所谓的冲突 因此 只需
  • Jupyter 笔记本 CPU 使用率低

    我注意到有些单元需要很长时间才能在我的 Jupyter Notebook 上完成执行 查看任务管理器时 我发现 python 进程仅使用了大约 4 的 CPU 我正在使用Python 3 6 2 我使用的是 Windows 但使用 Bash
  • 使用 float 在 3 列上进行 div

    我试图将 6 个不同高度的 div 放置在 3 列上 我对左侧和右侧的 div 使用 float 属性 对中央 div 使用 margin 0 auto 使用clear属性 我将第二行div放置在第一行之下 但我希望每个div都位于具有相同
  • 尝试在 Oracle SQL 中选择特定行时返回多行

    我试图从 Oracle SQL 中特定行的字段 tid 返回一个值 但我得到了一个奇怪的行为 首先 我尝试了这个 select tid from select tid rownum as rn from select tid from Tr
  • 使用 Word.Interop 创建多级项目符号列表

    我需要通过创建多级项目符号列表Microsoft Office Interop Word我目前正在 再次 与它的 可怕的 API 作斗争 我刚刚使用编程语言 C 在 Microsoft Office Word 2010 的 VSTO 文档级
  • 我可以在 CSS 中将 Twitter Bootstrap 脚手架跨度称为 mixin 而不是类吗?

    我明白我可以添加一个class span3 to a div 但是如果我想通过 LESS 将等效属性赋予另一个类怎么办 Example div class span3 This width is span3 div div class an
  • 是否可以在 python 中 pickle itertools.product ?

    我想保存以下状态itertools product 我的程序退出后 可以用酸洗来做到这一点吗 我计划做的是生成排列 如果该过程被中断 键盘中断 我可以在下次运行程序时恢复该过程 def trywith itr try for word in
  • 如何防止我的计时器在执行回调之前进行 GC 收集?

    我需要创建一堆计时器作为局部变量来执行以下操作 void Foo Timer t new Timer myTimerCallback null 1000 Timeout Infinite 不幸的是 其中一些在 1 秒后调用 myTimerC
  • 冒号 (:) 运算符的作用是什么?

    显然 冒号在 Java 中有多种使用方式 有人介意解释一下它的作用吗 例如这里 String cardString for PlayingCard c this list lt cardString c n 你会怎么写这个for each以
  • 如何在 docker ubuntu 基础上启动 cron?

    我已经通过安装了 cronapt get install cron 尝试启动 cron 失败 如预期 因为upstart不运行 正确启动 cron 的命令行是什么 即它将读取用户的 crontab 将读取 etc crontab 等 请注意
  • 自动将数组映射到列表

    class A public List
  • 根据目录切换 npm 注册表

    我最近开始为节点进行开发 我工作的公司有一个内部 npm 注册表 我想知道如何根据我的开发位置使用不同的注册表设置 为了说明这一点 我有一个如下所示的目录结构 Code My Projects Proj 1 Proj 2 My Compan
  • Jpa prepersist 回调未在父级上调用

    My code Entity Inheritance strategy InheritanceType TABLE PER CLASS public class SiteMessage implements Identifiable Pre
  • C++11 相当于 boost shared_mutex

    是否有 C 11 的等效项boost shared mutex 或者在 C 11 中处理多个读取器 单个写入器情况的另一种解决方案 我尝试过但没能得到shared mutex进入C 11 它已被提议作为未来的标准 该提案是here http
  • “高 ASCII”字符的正确技术术语是什么?

    引用 高 ASCII 或 扩展 ASCII 字符的技术上正确的方法是什么 我指的不仅仅是128 255的范围 而是0 127范围之外的任何字符 它们通常被称为变音符号 重音字母 有时被随意称为 国家 或非英语字符 但这些名称要么不精确 要么
  • 具有动态值的 Angular index.html |网络工作者

    直到最近 我们还使用express js 来为Angular 提供index html 因为我们需要在应用程序启动之前从数据库填充动态变量 然而 新的Angular 7通过web worker缓存源index html 因此 当我加载网页时
  • 角度5根据另一个字段的值有条件地验证字段

    如何根据另一个字段的值有条件地验证一个字段 这是我尝试过的 但似乎不起作用 this PDform formbuilder group intlNumber this nationality Abroad Validators compos
  • 将 merge 转换为 rebase,无需再次执行 merge

    我犯了一个错误 我应该使用git pull rebase 但我发布了一个简单的git pull 合并了所有内容 现在在我的分支的头部有一个合并提交 我想摆脱那个合并提交 我想我只需发出一个git rebase i HEAD 3 将我的最后一