如何将一个Git仓库迁移至另一个Git仓库的历史起始位置以实现PR合并?
跨无关仓库提交PR并保留提交历史的解决方法
具体操作步骤
- 添加目标仓库为本地远程源并拉取所有提交:
git remote add upstream <原仓库的GitHub地址> git fetch upstream - 获取原仓库的初始提交哈希(即最早的那个提交):
输出结果里的短哈希(比如git log --oneline --reverse upstream/main | head -1a1b2c3)就是你需要的根提交标识。 - 切换到你要提交PR的本地分支:
git checkout <你的分支名> - 将你的分支所有提交变基到原仓库初始提交之后,让两个仓库历史产生交集:
git rebase --root --onto <刚才获取的原仓库根提交哈希> - 检查提交历史是否符合预期(原仓库初始提交在前,你的提交在后):
git log --oneline - 强制推送改写后的分支到你的fork仓库(因为历史已变更,必须用强制推送):
git push -f origin <你的分支名> - 此时再去GitHub提交PR,系统会识别到两个分支有共同的初始提交,就能正常处理合并请求了。
内容的提问来源于stack exchange,提问作者LukeTheWalker
相关产品推荐
相关产品推荐

