gpt4 book ai didi

git - 使用 Git 管理 WordPress 的本地、开发和实时版本

转载 作者:太空狗 更新时间:2023-10-29 14:34:40 24 4
gpt4 key购买 nike

我正在考虑使用 git 来管理 WordPress 项目的版本控制。

我通常有一个本地版本,一个在客户端可以访问和测试的网络服务器上的开发版本,然后是一个实时版本。

我通常会在本地开发,然后将我的更改推送到服务器上的存储库,然后通过 SSH 进入服务器上的开发文件夹并从存储库中提取。当我想在实时站点上发布更改时,我通过 SSH 进入 Web 服务器上的实时文件夹并从存储库中提取。

这是我的困境。

我希望忽略通过 WordPress 管理员(图像上传等)添加到本地版本的媒体,但我希望跟踪添加到 Dev 版本的媒体,这样当我将媒体文件从开发人员 pull 到实时站点时网站被 pull 走。

有什么想法可以让这样的东西发挥作用?

最佳答案

可能有更好的解决方案,但这两个选项在类似情况下对我来说效果很好。假设您在本地工作的分支称为 master,并且在您所有的存储库中,远程 origin 指的是您推送到的裸存储库。

  1. 如果您所有的媒体都整齐地放在一个目录中,您可以有一个单独的存储库来跟踪媒体并将其添加为 submodule到开发和实时存储库。在您的本地副本中,您应该:

    • [在你想要本地直播媒体的情况下]注意不要 (a) 在你的子模块中提交,(b) 从它推送,也不要 (c) 将子模块的新版本添加到你的 master 分支机构
    • [在本地副本中根本不需要这些媒体的情况下]根本不更新和初始化子模块 - 只需将其路径添加到 .git/info/exclude

    即使您的媒体位于不同的目录中,您仍然可以使用此方法,但管理子模块会有点痛苦,如果子模块很多,会很快变得更烦人。

  2. 或者,您可以将您的开发和实时存储库保存在不同的分支上,例如称为 with-media,它始终与 master 相同,但具有在历史末尾添加媒体的 promise 。您可以使用 git rebase 维护这种情况。例如,如果你刚刚在本地做了一些你想推送的更改,你会这样做:

    git push origin master

    ssh server
    cd dev
    # git branch should show you that you're on 'with-media'
    git fetch origin
    git rebase origin/master

    现在假设您将一些文件上传到开发存储库,并想要提交它们:

    ssh server
    cd dev
    git add [whatever-media-files]
    git commit
    git push origin with-media

    现在要更新您的实时存储库,您只需执行以下操作:

    ssh server
    cd live
    # git branch should show that you're on 'with-media'
    git fetch origin
    git merge origin/with-media

    首先要设置这些分支,您需要:

    ssh server
    cd dev
    # git branch should show that you're on 'master', since you haven't created
    # the other branch yet:
    git checkout -b with-media
    git push origin with-media

    cd ~/live
    git fetch origin
    git checkout -t origin/with-media

    最后一点,假设您在开发存储库中进行了一些更改,而不仅仅是添加媒体,并且您希望在您的 master 分支中进行这些代码更改。然后(在你推送任何东西之前!)你需要用 git rebase -i origin/master 重新排序历史。

      ssh server
    cd dev
    git rebase -i origin/master
    # Reorder the lines so that the non-media commits are first (earliest) in the file.
    # Save the file and exit your editor.

    # Now find the SHA1 sum (object name) of the last commit that has non-media changes.
    # (The object name of the commits will have been changed by the rebase.)
    git log --oneline

    # Let's say that was commit f414f3l. Then you can push just the history up to and
    # including that commit back to the master branch with:
    git push origin f414f3l:master

    # Also push your 'with-media' branch back:
    git push origin with-media

    在理想情况下,您不需要经常执行最后这些步骤,但在实践中最好知道如何执行:)

关于git - 使用 Git 管理 WordPress 的本地、开发和实时版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239683/

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