gpt4 book ai didi

git - 如何使用 Git 同时处理多个项目?

转载 作者:太空狗 更新时间:2023-10-29 14:06:33 25 4
gpt4 key购买 nike

目前我正在使用 Wordpress 为客户创建一个站点,但在 Wordpress 中构建一个插件和主题,之后我将自行打包和重新分发。

我还将使用 Git 将站点推送到服务器。

过去,我使用 ln -s 将其他项目符号链接(symbolic link)到主项目中。一个缺点是我必须将它们全部单独推送。

还有什么其他方法可以做到这一点?

最佳答案

为您要单独分发的每个主题和插件创建一个存储库。

然后,在站点的存储库中,将它们添加为 submodules .

使用子模块

git submodule add [clone url of your plugin]
git submodule add [clone url of your theme]

这将为每个子模块创建一个文件夹,其中包含存储库内容,就好像它是克隆的一样。

当你想“pull ”你的子模块时,做:

git submodule update

处理子模块

参见 the submodule documentation section with the same name .

您可以直接从使用子模块的项目中进行更改、提交和推送。只需 cd 进入子模块的目录并像使用任何其他存储库一样使用它。

默认情况下,子模块处于 detached head 状态,进入子模块的目录并 check out 一个分支以获得正确的跟踪分支(稍后,当您想要更新子模块时,使用 git submodule update --remote --merge 从主存储库中避免再次分离 HEAD)。然后像在任何 git 存储库中一样工作:

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

然后,无论您在哪里克隆主存储库:

git pull # Pull the main repository's changes, along with the information telling it what version of it's submodules it should use.
git submodule update # Effectively update the submodules by fetching said versions.

关于git - 如何使用 Git 同时处理多个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com