Zha*_* Yi 5 git github git-submodules
我在 github 上有一个存储库,其中有一些子模块。当我git status在我的存储库中运行时,我看到子模块已更改:
modified: ci (new commits)
modified: metadata (new commits)
Run Code Online (Sandbox Code Playgroud)
如何将本地子模块重置为与 origin/master 子模块引用相同?我尝试过git reset --hard origin/master仅重置本地文件而不重置子模块。
此外,我在这些子模块中没有任何本地更改。我认为发生的情况是我git pull在子模块中运行了 a,这使得我的存储库引用的提交 ID 发生了变化。
子模块是 Git 存储库。
\n\n如果要更改在 Git 存储库中签出的提交,请输入 Git 存储库并git checkout在其中运行。所以你可以:
(cd ci && git checkout origin/master)\nRun Code Online (Sandbox Code Playgroud)\n\n例如,更改在ci目录中的 Git 存储库中签出的提交。metadata您可以对包含 Git 存储库的子目录重复此操作metadata。
请注意,这不会更改超级项目(当前 Git 存储库)中记录的提交哈希 ID。该超级项目列出了超级项目 Git 运行时应使用的哈希 ID:
\n\n(cd <submodule> && git checkout <hash-id>)\nRun Code Online (Sandbox Code Playgroud)\n\n如果您更改了哈希 ID,则希望超级项目通过输入子模块 Git 存储库并检查其他提交来检查 \xe2\x80\x94,例如 \xe2\x80\x94,您应该git add在超级项目中运行以记录将新的哈希 ID 添加到超级项目存储库的索引中:
git add ci metadata\nRun Code Online (Sandbox Code Playgroud)\n\n然后git commit在超级项目存储库中运行,以进行记录这些新哈希 ID 的新提交。
这git submodule命令可以为您执行一些操作:
git submodule update\nRun Code Online (Sandbox Code Playgroud)\n\n告诉你的超级项目 Git 运行:
\n\n(cd <submodule> && git checkout <hash-id>)\nRun Code Online (Sandbox Code Playgroud)\n\n根据当前存储在超级项目索引中的哈希 ID 对于每个子模块。另一方面:
\n\ngit submodule update --remote\nRun Code Online (Sandbox Code Playgroud)\n\n告诉你的超级项目 Git 运行:
\n\n(cd <submodule> && git fetch && git checkout origin/master)\nRun Code Online (Sandbox Code Playgroud)\n\n在每个子模块中。该名称origin/master实际上取决于配置设置;这只是默认值。有许多附加标志可以git submodule update使其执行其他操作。
(我更喜欢直接进入子模块并自己做这些事情,这样我就可以看到我在做什么。)
\n