在GitHub上fork一个目录

7
我在Github上有一个项目,它是一个大项目的分支。 我为它创建了一个插件,但他们告诉我他们不会包含这个插件,我必须单独发布它,所以现在我想fork已经fork过的项目,但不是全部,只是我创建插件的目录。是否可行?
编辑: 显然在Github上我不能fork自己的存储库,所以我认为答案是否定的。

请查看Git子模块。这确实不是您问题的正确解决方案,但可能是“绕过”您未来问题的好方法。 - ConcurrentHashMap
我完全没想到他们会让我自己创建项目。我本来想我的补丁会被接受的。 - LtWorf
3个回答

3

只需使用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

我尝试使用filter-branch,然后它告诉我本地副本落后了,说在推送之前需要先拉取,并恢复了自己... - LtWorf

1
将插件所在的目录放在一个单独的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。不过这可能只是我的想象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接