我在 github 上有一个项目,这是一个大项目的分支。我为此创建了一个插件,但他们告诉我他们不会包含该插件,我必须单独发布它,所以现在我想 fork 已经分叉的项目,但不是所有内容,只是我制作该插件的目录。可能吗?
编辑: 显然在 github 上我不能 fork 我自己的存储库,所以我认为答案是否定的。
您可以使用git filter-branch
重写存储库的整个历史记录,只是为了保留(和移动)您的插件。这样做可以让您保留插件历史记录。然后在回答https://stackoverflow.com/a/14895900/611560git submodule
中建议使用https://stackoverflow.com/users/1967966/anh-nhan-nguyen
问候。
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
将包含插件的目录放在单独的 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
。可能是我的想象。