【问题标题】:WordPress as git submodule, accidentally updated through WP admin instead of git, now modified contentWordPress 作为 git 子模块,通过 WP admin 而不是 git 意外更新,现在修改了内容
【发布时间】:2026-02-06 09:25:02
【问题描述】:

我按照 David Winter 的工作流程“使用 Git 安装和管理 WordPress”。 WordPress 是一个 git 子模块。在最新的 WordPress 3.9 升级中,我不小心通过 WordPress 管理员而不是通过 git 进行了更新。现在,当我运行 git status 时,我得到:

modified:   wordpress (modified content, untracked content)

这是有道理的。但我无法提交修改后的 wordpress 内容。 WordPress 子模块很脏。如果我在我的主仓库中运行git diff,我会得到:

-Subproject commit 22bb60277036651db73dc872eaa7d2a50276b00d
+Subproject commit 22bb60277036651db73dc872eaa7d2a50276b00d-dirty

解决此问题的最佳方法是什么?如果我在我的主仓库中运行以下命令,它会弄乱我的 WordPress 安装吗? (注意:我还更新了一些插件。)

git clean -dfx             # delete everything in the worktree that isn't tracked
git reset --hard           # wipe all modifications to tracked files
git checkout 3.8.1         # return to previous version tag

更新:上面的命令完美运行。我查看了 git clean 上的文档以了解选项 'd'、'f' 和 'x' 是什么:https://www.kernel.org/pub/software/scm/git/docs/git-clean.html。在 WordPress 目录中运行之前的命令后,我能够签出 3.9 版本,从而正确更新 WordPress。

【问题讨论】:

  • 您可以在 Wordpress 目录中运行这些命令,因为它有自己的子模块。它不应该影响任何插件。 Wordpress 目录应该是完全独立的,因此您也可以简单地删除它,然后再次克隆存储库。
  • 谢谢。我在 WordPress 目录中运行命令,然后签出 3.9 标签。现在一切都很干净并已解决。
  • 我更新了我的问题以包含分辨率。
  • @scpers0n 添加您的更新作为此问题的答案。

标签: wordpress git git-submodules git-reset


【解决方案1】:

以下命令完美运行:

git clean -dfx             # delete everything in the worktree that isn't tracked
git reset --hard           # wipe all modifications to tracked files
git checkout 3.8.1         # return to previous version tag

我查看了 git clean 上的文档以了解选项“d”、“f”和“x”是什么:https://www.kernel.org/pub/software/scm/git/docs/git-clean.html。在 WordPress 目录中运行之前的命令后,我能够签出 3.9 版本,从而正确更新 WordPress。

【讨论】: