使用本地更改更新 Git 子模块

Updating a Git Submodule With Local Changes

我的一个项目中有一个 Git 子模块,我正在尝试在我进行了一些更改的本地副本上更新它。我希望遥控器覆盖我的本地更改,但是当我尝试以下命令时,没有任何反应,我仍然看到我的本地更改。

joesan@joesan-S-14-v5:~/Projects/Private/github-docs/joesan-me/themes/hugo-clarity$ git status
HEAD detached at d5800ff
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   exampleSite/config/_default/params.toml

no changes added to commit (use "git add" and/or "git commit -a")
joesan@joesan-S-14-v5:~/Projects/Private/github-docs/joesan-me/themes/hugo-clarity$ 

我哪里做错了?

正如@torek 评论所说,git status 仅向您显示 git 存储库 的当前状态。它不会做任何事情。

当你在 super repo root 时,你不能简单地使用 git reset --hard。您应该在 resetcheckoutrestore.

之前 cd 进入子模块

所以:

cd path/to/submodule
git reset --hard  # or git restore .

如果子模块很多或者你不想cd进去,你可以使用:

git submodule foreach git reset --hard

但这会影响超级仓库下的所有子模块,请注意!