如何从已有Git仓库拆分出独立Nframework仓库并保留原仓库副本?
以下是具体操作步骤,全程不会影响原javaproject仓库的内容:
克隆原仓库到本地(避免修改原本地副本)
打开终端,执行命令克隆原仓库的全新副本:git clone git@github.com:你的用户名/javaproject.git cd javaproject提取Nframework目录的独立历史
使用git filter-repo工具(Git官方推荐的历史重写工具,替代旧的git filter-branch),仅保留Nframework目录的所有提交历史,并将目录本身移除(让文件直接位于仓库根目录):git filter-repo --subdirectory-filter Nframework注意:如果你的Nframework在原仓库的子路径下(比如
myprojects/Nframework),请将命令改为git filter-repo --subdirectory-filter myprojects/Nframework。如果未安装git filter-repo,可通过包管理器安装(如brew install git-filter-repo或sudo apt install git-filter-repo)。在GitHub创建新的Nframework仓库
登录GitHub,创建一个名为Nframework的新仓库,不要勾选初始化README、.gitignore或许可证选项,保持仓库为空。关联本地拆分后的仓库到新远程仓库
在终端执行命令,将本地处理后的仓库关联到新创建的GitHub仓库:git remote add origin git@github.com:你的用户名/Nframework.git推送独立仓库到GitHub
将本地的历史推送到新仓库的主分支(如果你的默认分支是master,替换为master):git push -u origin main
完成以上步骤后,原javaproject仓库的内容和历史完全保留,同时Nframework拥有了独立的GitHub仓库和完整的提交历史。
内容的提问来源于stack exchange,提问作者Kumar Abhiii

