注意:你需要 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
:项目中要创建单独存储库的文件夹。
$ 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.com 的快速设置页面上新存储库的顶部,单击 以复制远程存储库 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