目前我正在为一个使用Wordpress的客户创建一个网站,但在Wordpress中构建一个插件和主题,我将自己打包并重新发布。
我还会使用Git将网站推送到服务器。
过去,我使用ln -s
将其他项目符号链接到主项目中。一个缺点是我必须单独推送它们。
还有其他什么方法?
答案 0 :(得分:2)
为每个要分开分发的主题和插件创建一个存储库。
然后,在网站的存储库中,将其添加为submodules。
git submodule add [clone url of your plugin]
git submodule add [clone url of your theme]
这将为每个子模块创建一个文件夹,其中的存储库内容就像克隆一样。
当你想"拉"您的子模块,执行:
git submodule update
请参阅the submodule documentation section with the same name。
您可以直接从使用它们的项目进行更改,提交和推送子模块。只需cd
进入子模块的目录,并像使用任何其他存储库一样使用它。
默认情况下,子模块处于detached head
状态,进入子模块的目录并签出分支以获得正确的跟踪分支(稍后,当您想要更新子模块时,请使用{{ 1}}来自主存储库以避免再次分离git submodule update --remote --merge
。然后在任何HEAD
存储库中执行您的工作:
git
请注意" main" repository只存储它需要的子模块版本。因此,从主存储库的角度来看,您的子模块目前只是#34;在不同的版本中":
cd my_plugin
vim readme
git commit -m "Modified from main"
git push # Push the changes to the submodule's remote.
如果您希望项目使用新版本的子模块,请提交此项(这只会告诉主存储库它应该使用哪个版本的子模块)。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: my_plugin (new commits)
modified: my_theme (new commits)
然后,无论你在哪里克隆主存储库:
git commit sub1 sub2 -m "Use newer version of plugin and theme"
git push
答案 1 :(得分:1)
您要求的内容称为Git Submodules。
从链接页面:
假设您正在开发网站并创建Atom订阅源。您决定使用库,而不是编写自己的Atom生成代码。您可能不得不从CPAN安装或Ruby gem等共享库中包含此代码,或者将源代码复制到您自己的项目树中。包含库的问题在于难以以任何方式自定义库,并且通常更难以部署库,因为您需要确保每个客户端都具有该库。将代码存储到您自己的项目中的问题是,当上游更改可用时,您所做的任何自定义更改都很难合并。
Git使用子模块解决了这个问题。子模块允许您将Git存储库保存为另一个Git存储库的子目录。这使您可以将另一个存储库克隆到项目中,并使您的提交保持独立。
更多:http://git-scm.com/book/en/v2/Git-Tools-Submodules。您还可以在Web上搜索Git子模块以查找大量教程。
答案 2 :(得分:0)
您可以使用submodules。