将子文件夹拆分成新仓库

您可以将 Git 仓库内的文件夹变为全新的仓库。

如果您创建仓库的新克隆副本,则将文件夹拆分为单独的仓库时不会丢失任何 Git 历史记录或更改。

  1. 打开 Terminal(终端)Terminal(终端)Git Bash

  2. 将当前工作目录更改为您要创建新仓库的位置。

  3. 克隆包含该子文件夹的仓库。

    $ git clone https://github.com/USERNAME/REPOSITORY-NAME
  4. 将当前工作目录更改为您克隆的仓库。

    $ cd REPOSITORY-NAME
  5. To filter out the subfolder from the rest of the files in the repository, run git filter-repo, supplying this information:

    • FOLDER-NAME: The folder within your project where you'd like to create a separate repository.

      <div class="extended-markdown tip border rounded-1 mb-4 p-3 color-border-accent-emphasis color-bg-accent f5">
      
      **提示:**Windows 用户应使用 `/` 来分隔文件夹。
      
      </div>
      
      $ git filter-repo --path FOLDER-NAME1/ --path FOLDER-NAME2/
        # Filter the specified branch in your directory and remove empty commits
        > Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89)
        > Ref 'refs/heads/BRANCH-NAME' was rewritten

      The repository should now only contain the files that were in your subfolder(s).

  6. 在 GitHub 上创建新仓库

  7. At the top of your new repository on GitHub.com's Quick Setup page, click to copy the remote repository URL. 创建远程仓库 URL 字段

    提示: 有关 HTTPS 与 SSH URL 之间的差异,请参阅“关于远程仓库

  8. 检查仓库现有的远程名称。 例如,源仓库上游仓库是两种常见选择。

    $ git remote -v
    > origin  https://github.com/USERNAME/REPOSITORY-NAME.git (fetch)
    > origin  https://github.com/USERNAME/REPOSITORY-NAME.git (push)
  9. 使用现有的远程名称和您在步骤 7 中复制的远程仓库 URL 为新仓库设置新的远程 URL。

    git remote set-url origin https://github.com/USERNAME/NEW-REPOSITORY-NAME.git
  10. 使用新仓库名称验证远程 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)
  11. 将您的更改推送到 GitHub 上的新仓库。

    git push -u origin BRANCH-NAME

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或者, 了解如何参与。