压缩包含合并提交的前几十个 git 提交

2023-12-01

我有一个具有 root 权限的现有存储库R,然后是几十次提交,包括多次合并,最多X,然后线性历史直至Y。我想压碎一切R to X进入单个提交并强制推送它。我怎样才能做到这一点而不需要花费大量精力重新解决合并问题?

或者,这个问题可以表述为更改根提交R to X并剪掉之前的图表X.

这是简化提交图的图示:

R           ---- I want to squash from here...
|
A
|\
B C
| |
D E
| |\
F G H
| |/
I J
|\ \
K L M
|/  |
N  /
|/
O 
|
X           ---- to here.
|
P
|
Q
|
Y

使用常规变基压缩所有内容将需要重新解决多个合并提交。我知道 git rerere,但我不知道如何在这种情况下使用它。提交所有这些时它没有启用。


这可以通过变基来完成,但手动完成要容易得多

git checkout --orphan temp X
# now you are on a brand new branch with no history, and your working tree is just like X
git commit -m "Single shot"
# now let's carry over X up to Y
git cherry-pick X..Y

如果你喜欢这个结果,就把你的树枝放在这里,从此过上幸福的生活。

更新: 如果 D 之后的历史很复杂,最好为最后一步运行变基:

git rebase --rebase-merges X Y --onto temp

如果该历史记录很复杂并且包含有冲突的合并,我可以提供此脚本来处理最后一步,以避免必须重做有冲突的合并:

https://github.com/eantoranz/git-replay

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

压缩包含合并提交的前几十个 git 提交 的相关文章

  • 如何查看上次提交和现在之间发生了什么变化(进行一些更改后)

    与此类似question https stackoverflow com questions 1552340 how to list the file names only that changed between two commits但
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 运行“git apply”时出错

    当我尝试时 您能否告诉我如何解决 补丁不适用 错误 git 应用补丁 git apply 0001 my patch error patch failed test xml 114 error text xml patch does not
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • Jenkins git 插件 - 有时太慢

    以下内容摘自 Jenkins 日志 00 00 03 135 gt git fetch tags progress email protected cdn cgi l email protection some org some repo
  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • 如何解决 VSTS 中拉取请求中的合并冲突?

    我已经创建了拉取请求 我进入了这个 批准 按钮不执行任何操作 并且 完成 被禁用 如何解决拉取请求中的冲突 Update 微软刚刚添加了基于浏览器的合并 这可能会让你摆脱小冲突的困境 并提供自 Sprint 150 起改进了不同场景的可视化
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • 有谁知道类似于 SVN Time-Lapse View 的 Git 工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVN Time Lapse View 是一个跨平台查看器 可以下载文件的所有修订版本 并允许您通过拖
  • 为什么我无法创建/签出该分支?

    我正在尝试创建本地 Git 分支 但它不起作用 以下是我正在使用的命令 tablet edit11 git checkout b edit 11 Switched to a new branch edit 11 tablet edit11
  • git Push over sshfs 失败,并显示“关闭 sha1 文件时出错:错误的文件描述符”

    我们使用 sshfs 通过 SSH 安装文件系统 并将其用作 git 存储库协作的远程存储 Mac OSX 10 6 6 到 RHEL 3 服务器 SSHFS 版本 2 2 MacFUSE SSHFS 2 2 0 MacFUSE 库版本 F
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • 当 .gitattributes 中的 EOL 设置为 CRLF 时,Git diff 认为行结尾为 LF

    当我恢复对带有 Windows 行结尾的文件的更改并且 gitattributes 将 EOL 定义为 CRLF 时 git 认为行结尾已更改为 LR 即使十六进制编辑器显示 CRLF 仅当 gitattributes 定义 EOL 字符时
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到

随机推荐

  • 使用 Excel VBA 抓取 HTML

    我一直在尝试抓取并解析网站上的一些财务数据 以便我可以使用 VBA 将数据添加到 Excel 电子表格中 我找到了几种可能的解决方案 但我似乎无法让它们适合我的参数 我的问题是我只需要表中的一个变量 平均目标价格 我一直无法弄清楚我做错了什
  • 将 SQLite 数据库中存储的经度和纬度数据导出到文件以便可以通过网站导入到 Google Map API 的最简单方法是什么?

    我创建了一个应用程序 它在 SQLite 数据库中记录一系列经度和纬度值 并将它们显示为 MapActivity 上的彩色轨迹 我现在希望能够以某种方式导出这些数据 最好导出到文件 以便用户可以将这些值上传到显示 Google Map AP
  • php在上传时调整图像大小

    我得到了一个表单 用户可以在其中插入一些数据并上传图像 为了处理图像 我得到了以下代码 define MAX SIZE 10000 errors 0 image FILES fileField name uploadedfile FILES
  • 请求库:cx_Freeze 后缺少 SSL 握手证书文件

    我正在 python 3 3 中构建一个使用 requests 库的应用程序 当我尝试获取带有 SSL 连接的 URL 时 我想使用 verify true 来验证它 当运行我的 python 脚本时 这非常有效 当我冻结相同的脚本时 它会
  • Uploadify + Paperclip + Rails 嵌套关联 before_save

    我需要创建一个模特申请表 模特可以在其中填写并添加图片 我正在使用 Uploadify Paperclip 和 Rails 3 方法来遵循这个示例 https github com websymphony Rails3 Paperclip
  • 当不存在符号信息时,如何使用 GDB 为 x86 程序集设置断点? [复制]

    这个问题在这里已经有答案了 当没有符号信息时 即无法编写时 如何使用 GDB 对 x86 汇编代码设置断点b start 我想立即停止执行 但是写b 0不是很有用 因为这会在地址处停止执行0 但我需要在地址处中断执行x相对于起点 当不存在符
  • 如何在 LongListSelector 中突出显示所选项目

    我想简单地在 LongListSelector 中当前选定的项目周围显示边框 我已经为 LongListSelector 设置了 ItemTemplate 但我不确定如何修改边框 以便只有当前选定的项目包含边框 主页 xaml
  • 清理 PHP/SQL $_POST、$_GET 等...?

    好吧 这个主题是一个温床 我明白这一点 我还了解这种情况取决于您使用的代码 我有三种情况需要解决 我有一个表格 我们需要允许人们使用逗号 波形符等发表评论和声明 但仍然免受攻击 我有人用英语输入这样的日期 10 13 11 mm dd yy
  • 安装 UWP,无需开发者模式和旁加载

    在非商店的win10 UWP中 安装应用程序应打开开发者模式或侧载模式 然而 我公司的安全级别很高 我无法更改目标笔记本的任何设置 具体来说 这些笔记本在更新和安全方面甚至不 适合开发人员 我的工作是使用 UWP 为公司创建一个自动 wif
  • Google Earth Engine 中带有 map() 函数的双循环

    In Google 地球引擎开发人员指南 有一个建议要避免for 循环 他们建议使用map 函数如本例所示 to avoid var clientList for var i 0 i lt 8 i clientList push i 1 p
  • 如果用户禁用了应用程序的推送,是否可以实现无声远程通知?

    在我的设置选项卡中 我有一个特定功能的开关 可以根据 API 响应关闭或打开 在网站上 只有管理员有权打开 关闭 我可以每次在设置点击时进行 user API 调用来检查用户的当前设置 但有几个缺点 例如如果用户已经在设置中 则它不会更新
  • 使用 pyspark 进行条件聚合

    考虑以下作为数据框 a b c d e africa 123 1 10 121 2 africa 123 1 10 321 98 africa 123 2 12 43 92 africa 124 2 12 43 92 usa 121 1 1
  • 仅运行最后一个任务!

    我迫切希望找到解决问题的方法 以下是为中的每个项目生成不同任务的代码List
  • 如何在android中获得相机的权限。(特别是Marshmallow)

    嘿 我正在 android studio 中设计一个应用程序 其中我需要相机的许可 我已经包括了
  • GWT div aria-hidden 不隐藏在 IE 中

    我用 GWT 编写了我的登陆页面 在 IE 中 我在其末尾看到了这个空带 我将其涂成绿色 以便您可以看到它 这只发生在 IE 中 我正在使用 IE9 进行测试 Chrome 中不行 Firefox 中不行 Safari 中不行 查看 DOM
  • 按后退按钮后文档已过期

    我有一个名为 a php 的页面 它有一个表单并通过 POST 将数据提交到同一文件 a php 页面加载时没有错误 然后我单击该页面上的任何链接 b php 或 b html 它像往常一样定向到任何页面 然后 当我单击 b php 或 b
  • nodejs child_process exec 'java -version'

    嘿 我正在 nodejs shell 中运行以下代码 exec require child process exec 现在我有 exec var 作为函数 然后我跑 exec java function error stdout stder
  • StorageEvent 在 Excel for Windows 中不起作用

    正如一些现有线程所建议的 例如 one two three 当前的对话框不提供API发送经常消息从主页 例如任务窗格 发送到对话框 所以我必须寻找解决方法 我们保留一个变量message in localStorage 然后我们使对话框选中
  • 空白CSS属性正在给flex带来问题[重复]

    这个问题在这里已经有答案了 我面临的问题是white space nowrap当有弹性容器时 有一个弹性container with flex direction row 其中有两个divsidebar使用设置一定的宽度flex 0 0 7
  • 压缩包含合并提交的前几十个 git 提交

    我有一个具有 root 权限的现有存储库R 然后是几十次提交 包括多次合并 最多X 然后线性历史直至Y 我想压碎一切R to X进入单个提交并强制推送它 我怎样才能做到这一点而不需要花费大量精力重新解决合并问题 或者 这个问题可以表述为更改