【问题标题】:Fork one directory on github在 github 上 fork 一个目录
【发布时间】:2013-02-15 13:22:14
【问题描述】:

我在 github 上有一个项目,这是一个大项目的分支。 我为此创建了一个插件,但他们告诉我他们不会包含该插件,我必须单独发布它,所以现在我想 fork 已经分叉的项目,但不是所有内容,只是我制作该插件的目录。有可能吗?

编辑: 显然在 github 上我不能 fork 我自己的存储库,所以我认为答案是否定的。

【问题讨论】:

  • 看看Git Submodules。这确实不是您问题的正确解决方案,但可能是将来“绕过”您的问题的好方法。
  • 我不知道他们会告诉我创建自己的项目。我希望我的补丁被接受。

标签: git github git-fork


【解决方案1】:

您可以使用git filter-branch 重写您的存储库的整个历史,只是为了保留(和移动)您的插件。这样做可以让您保留插件历史记录。 然后使用git submodule 作为答案https://stackoverflow.com/a/14895900/611560 中建议的https://stackoverflow.com/users/1967966/anh-nhan-nguyen

问候。

【讨论】:

  • 我尝试使用 filter-branch 然后它告诉我我的本地副本落后了,说我需要先拉,然后才能推送,然后自己恢复了......
【解决方案2】:

只需git filter-branch 即可完成这项工作。

克隆包含子文件夹的存储库。

git clone https://github.com/USERNAME/REPOSITORY-NAME

要从存储库中的其余文件中过滤掉子文件夹,请运行 git filter-branch,提供以下信息:

  • FOLDER-NAME:项目中您希望从中创建单独存储库的文件夹。

  • BRANCH-NAME:当前项目的默认分支,例如 master 或 gh-pages。

.

cd REPOSITORY-NAME
git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME  BRANCH-NAME 

使用现有的远程名称和远程存储库 URL 为您的新存储库设置一个新的远程 URL 并推送

git remote set-url origin https://github.com/USERNAME/NEW-REPOSITORY-NAME.git
git push -u origin BRANCH-NAME

【讨论】:

    【解决方案3】:

    将包含插件的目录放在单独的 GitHub 存储库中。我猜是yourname/yourplugin

    fork 大项目(yourname/bigproject 此处),并将插件存储库添加为子模块。

    git clone git@github.com/yourname/bigproject .
    git submodule add git@github.com:yourname/yourplugin path/to/the/plugin
    

    更新/拉取时,只需运行以下命令:

    git pull --recurse-submodules
    git submodule update
    

    我认为你第一次必须这样做git submodule update --init。可能是我的想象。

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 2020-12-30
      • 1970-01-01
      • 2015-05-09
      • 2015-06-01
      • 2015-09-14
      • 2014-03-15
      • 1970-01-01
      • 2014-08-26
      相关资源
      最近更新 更多