注意
您需要 Git 2.22.0 或更高版本才能按照以下说明操作,否则 git filter-repo
将无法工作。
如果您创建存储库的新克隆,则在将文件夹拆分为单独的存储库时,您不会丢失任何 Git 历史记录或更改。但是,请注意,新存储库将不包含原始存储库的分支和标签。
-
打开 终端终端Git Bash。
-
将当前工作目录更改为您想要创建新存储库的位置。
-
克隆包含子文件夹的存储库。
git clone https://github.com/USERNAME/REPOSITORY-NAME
-
将当前工作目录更改为您的克隆存储库。
cd REPOSITORY-NAME
-
要从存储库中的其余文件中过滤出子文件夹,请安装
git-filter-repo
,然后使用以下参数运行git filter-repo
。FOLDER-NAME
:您要在其中创建单独存储库的项目中的文件夹。
提示
Windows 用户应使用
/
分隔文件夹。$ git filter-repo --path FOLDER-NAME/ # Filter the specified branch in your directory and remove empty commits
现在,存储库应仅包含子文件夹中的文件。
如果您希望将一个特定的子文件夹作为新仓库的根文件夹,可以使用以下命令
$ git filter-repo --subdirectory-filter FOLDER-NAME # Filter the specific branch by using a single sub-directory as the root for the new repository
-
在 GitHub 上创建一个新的仓库。
-
在 GitHub 的快速设置页面上,点击您新仓库顶部的复制远程仓库 URL。
提示
有关 HTTPS 和 SSH URL 之间区别的信息,请参阅“关于远程仓库”。
-
使用您为仓库复制的 URL 添加一个新的远程名称。例如,
origin
或upstream
是两个常见的选项。git remote add origin https://github.com/USERNAME/REPOSITORY-NAME.git
-
验证是否已使用新的仓库名称添加了远程 URL。
$ git remote -v # Verify new remote URL > origin https://github.com/USERNAME/NEW-REPOSITORY-NAME.git (fetch) > origin https://github.com/USERNAME/NEW-REPOSITORY-NAME.git (push)
-
将您的更改推送到 GitHub 上的新仓库。
git push -u origin BRANCH-NAME