You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将现有仓库callsheet目录迁移至含初始提交的新仓库遇推送失败求助

可行迁移方案

步骤说明

1. 克隆原仓库的完整副本

先创建一个临时仓库,避免直接修改原仓库:

git clone orgRepo.git temp-repo
cd temp-repo

2. 过滤并保留callsheet目录的历史

使用git filter-repo(官方推荐替代git filter-branch的工具),只保留callsheet目录的所有提交记录,并将该目录的内容移至仓库根目录:

git filter-repo --subdirectory-filter callsheet

若系统未安装git filter-repo,可通过包管理器安装(如Ubuntu:apt install git-filter-repo)或pip安装:pip install git-filter-repo

3. 关联新仓库并拉取其现有历史

将新仓库添加为远程仓库,然后拉取它的master分支历史:

git remote add new-origin newRepo.git
git fetch new-origin

4. 迁移历史至新仓库的初始提交之后

通过rebase --onto将过滤后的提交历史,接到新仓库master分支的最新提交之后,解决分支无共同祖先的问题:

git rebase --onto new-origin/master master

若过程中出现冲突,手动解决冲突后执行git rebase --continue即可。

5. 推送迁移后的分支与标签

完成rebase后,推送分支和所有标签到新仓库:

git push new-origin master
git push new-origin --tags

关键说明

你之前的操作失败,核心原因是原仓库的master分支与新仓库的master分支没有共同祖先,且原分支包含整个仓库的内容(并非仅callsheet目录),导致推送时因历史不一致被拒绝。上述方案通过过滤目录历史+重定向提交基线,解决了这个问题。

内容的提问来源于stack exchange,提问作者Harshita Porwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:35:15