以与之前解决相同的方式解决 git 变基冲突
Resolve git rebase conflicts the same way they were resolved previously
我决定从其他旧版本控制系统追溯提交历史记录,该历史记录从未出现在 Git 中。所以我创建了一个孤立分支 "newroot",并将来自其他版本控制系统的提交导入到它。以下问题 Insert a commit before the root commit in Git?
"newroot" 分支的文件与 "master" 分支的根提交完全匹配。
现在我想将 "master" 分支变基到 "newroot" 孤儿分支,例如:
git rebase --onto newroot --root master
问题是系统提示我解决所有合并冲突。多年来有数百次合并。我只是无法手动解决它们。而且真的没有必要,因为这些合并在过去已经解决了。由于 rebase 实际上并没有改变内容(因为我在同一棵树上 rebase),我希望 Git 完全 "replay the merge"。
有没有办法指定变基应该使用与以前使用的分辨率相同的分辨率?
我知道 "rerere" 可能对这里有所帮助。但是我必须在最初合并时已经启用它,对吗?或者我可以回顾性地重新创建 "rerere" 缓存吗?
我可以想象一个替代解决方案来完成我的任务。以某种方式要求 Git 连接 "newroot" 和 "master" 分支,而不实际变基。但我不确定这是否可能。
To somehow ask Git to concatenate the "newroot" and "master" branches, without actually rebasing. But I'm not sure if that's possible.
为了重写主历史,这被称为graft point, followed by a filter-branch
。
参见 this post as an example or this question。
在变基方面,您可以尝试使用像他们那样的合并策略,使用 master 分支内容解决任何冲突(因为 master 正在变基)
git rebase --merge -s recursive -X theirs --onto newroot --root master
我决定从其他旧版本控制系统追溯提交历史记录,该历史记录从未出现在 Git 中。所以我创建了一个孤立分支 "newroot",并将来自其他版本控制系统的提交导入到它。以下问题 Insert a commit before the root commit in Git?
"newroot" 分支的文件与 "master" 分支的根提交完全匹配。
现在我想将 "master" 分支变基到 "newroot" 孤儿分支,例如:
git rebase --onto newroot --root master
问题是系统提示我解决所有合并冲突。多年来有数百次合并。我只是无法手动解决它们。而且真的没有必要,因为这些合并在过去已经解决了。由于 rebase 实际上并没有改变内容(因为我在同一棵树上 rebase),我希望 Git 完全 "replay the merge"。
有没有办法指定变基应该使用与以前使用的分辨率相同的分辨率?
我知道 "rerere" 可能对这里有所帮助。但是我必须在最初合并时已经启用它,对吗?或者我可以回顾性地重新创建 "rerere" 缓存吗?
我可以想象一个替代解决方案来完成我的任务。以某种方式要求 Git 连接 "newroot" 和 "master" 分支,而不实际变基。但我不确定这是否可能。
To somehow ask Git to concatenate the "newroot" and "master" branches, without actually rebasing. But I'm not sure if that's possible.
为了重写主历史,这被称为graft point, followed by a filter-branch
。
参见 this post as an example or this question。
在变基方面,您可以尝试使用像他们那样的合并策略,使用 master 分支内容解决任何冲突(因为 master 正在变基)
git rebase --merge -s recursive -X theirs --onto newroot --root master