我从一个开源项目中获取/提取依赖项。我这样做是为了更新情况。运行这个程序是必要的。
当我这样做的时候,主存储库构建文件中发生了一些不需要的更改。Git显示了发生的变化:
Changes are 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: _build/submodules/cl-webkit (new commits)
当我做git diff
时,我可以看到它是一个简单的变化:
$ git diff _build/submodules/cl-webkit/
diff --git a/_build/submodules/cl-webkit b/_build/submodules/cl-webkit
index cfc4f01e..29aeb74d 160000
--- a/_build/submodules/cl-webkit
+++ b/_build/submodules/cl-webkit
@@ -1 +1 @@
-Subproject commit cfc4f01ee806169d824750b4014653a93af9353d
+Subproject commit 29aeb74d854bd2ac52959ef3d793389d238636c5
更改保持为未声明和未提交状态。如果我试图用恢复它们
$ git restore _build/submodules/cl-webkit/
我没有收到错误消息。但是,它确实不起作用。按下git status
后,git显示内容保持不变:
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: _build/submodules/cl-webkit (new commits)
我该怎么办?
这很烦人。如果我在开源项目中执行Pull Request,我总是需要证明我是否意外添加(暂存(并提交了此更改。这种情况至少发生了两次,维护人员要求我恢复提交并在没有提交的情况下推送PR
更新子模块的正确命令是git submodule update
git submodule update _build/submodules/cl-webkit
(我也很惊讶git restore
和git checkout
都不起作用(
由于子模块也是git repo,您可以通过在该子模块中运行常规git命令来更新它:
# if you can afford to delete all changes, you can use 'reset --hard'
cd _build/submodules/cl-webkit
git reset --hard cfc4f01ee806169d824750b4014653a93af9353d