git - 在 git rebase 期间备份到以前的冲突
问题描述
我正在以非交互方式将功能分支重新设置为 master git rebase feature master
:.
在此过程中会出现一系列冲突,我一次手动解决它们。但是,在冲突 #3 上,我忘记保存具有一系列广泛更改的文件,只是盲目地保存git add
文件、冲突和所有内容,以及git rebase --continue
.
现在我遇到了另一个冲突,由于之前的冲突,文件看起来像一团糟。git rebase
为我提供--continue
, --skip
, 和--abort
, 并且我不想做任何这些:我想“备份”到上一个提交并保存我在“重新应用”补丁之前忘记保存的更改。变基。
实现这一目标的最简单方法是什么?
解决方案
这是我为解决这种情况所做的工作,以供将来参考。这篇文章给出了一些提示:
- 保存我忘记保存的文件的副本。
git rebase --abort
.- 查找
.git/logs/HEAD
我搞砸的提交 SHA。(即使在中止变基之后,这些也会被保存。) git checkout -b recovery SHA
.- 将文件的冲突解决版本保存在冲突版本(我错过的保存)和
git commit -m "resolve conflicts"
. git cherry-pick
rebase 的剩余提交到recovery
. 完成变基(这次更仔细地保存更改:)。git checkout feature
和git reset --hard recovery
。
如果我在上面做这个过程,上面会有额外的"resolve conflicts"
提交。git rebase -i
如果这很重要,我可以通过在顶部执行 a 来摆脱master
它,并将其压缩到它应该是其中一部分的提交中。
推荐阅读
- jupyter-notebook - Jupyterhub 用户主文件夹权限在重新启动时不匹配
- ruby-on-rails - Rails 视图助手似乎不适用于 render_to_string
- javascript - 为什么我不应该从计算中设置数据?
- sql-server - 在 asp.net core 中使用 linq 生成 excel 表
- simple-form - Rails 6 操作文本 - 表单验证错误
- c - 到达某个字符时如何停止读取输入
- javascript - 汉堡包上的手风琴(不显示子链接)
- excel - 将 excel 文件嵌入到 power point 并链接数据
- php - Laravel - 表格未显示数据
- angular - Angular 8 Electron 7 构建缺少“。” 在 webpack:// 在 Chrome 开发者工具源中