如何在不Fork仓库的前提下保留commit history复制代码仓库?
不Fork仓库且保留提交历史的解决方案
当然有,你可以通过Git的本地克隆+重置远程仓库的方式实现,具体步骤如下:
方式一:普通克隆(适合需要立即开始开发的场景)
- 在GitHub上创建一个全新的空仓库(不要勾选初始化README、.gitignore或许可证选项)。
- 在本地终端执行以下命令:
- 克隆模板仓库到本地:
git clone https://github.com/你的用户名/模板仓库名.git - 进入克隆后的仓库目录:
cd 模板仓库名 - 移除与原模板仓库的远程关联:
git remote remove origin - 添加你的新项目仓库作为新的远程源:
git remote add origin https://github.com/你的用户名/新项目仓库名.git - 推送所有提交历史和分支到新仓库:
(如果原模板仓库的默认分支是git push -u origin mainmaster,替换为git push -u origin master)
- 克隆模板仓库到本地:
方式二:裸克隆(适合仅复制仓库历史,不需要本地工作目录的场景)
这种方式更高效,不会生成本地工作文件:
- 同样先创建一个全新的空GitHub仓库。
- 在本地终端执行:
- 创建模板仓库的裸克隆:
git clone --bare https://github.com/你的用户名/模板仓库名.git - 进入裸仓库目录:
cd 模板仓库名.git - 将所有内容镜像推送到新仓库:
git push --mirror https://github.com/你的用户名/新项目仓库名.git - 完成后可删除临时的裸仓库目录:
cd .. && rm -rf 模板仓库名.git
- 创建模板仓库的裸克隆:
完成后,你的新项目仓库会完整保留原模板仓库的所有提交历史,同时GitHub不会将其标记为派生仓库,也不会有任何与原模板仓库的PR关联关系。
内容的提问来源于stack exchange,提问作者Nathan Wailes
相关产品推荐
相关产品推荐

