首页 > 解决方案 > git 子模块在父目录中显示为已更改

问题描述

我在我的项目中将一个库作为git 子模块签出,我经常在库中进行更改。每次我提交该更改git status时,父 repo 中的后续内容都会显示子模块已更改。我也使用__git_ps1,所以父目录提示显示有未提交的更改。

parent-project (master *) $ git diff
diff --git a/my-submodule b/my-submodule
index 5eb2e9f..fd40630 160000
--- a/my-submodule
+++ b/my-submodule
@@ -1 +1 @@
-Subproject commit 5eb2e9fdcb85ab5a1f57e622b17cc76e5af749b7
+Subproject commit fd406308851b5521980f4578960c428200c66371

我知道两种选择:

  1. git commit submodule来自创建不必要提交的父级,或
  2. 删除并重新添加似乎有点矫枉过正的子模块。

有没有办法告诉父 repo将子模块 ref 更新为最新的 master 并继续?我不想引用特定的 git 修订版,只是引用master的负责人或我选择的任何分支。

谢谢!

标签: gitgit-submodules

解决方案


有什么方法可以告诉父 repo 将子模块 ref 更新为最新的 master

是的,可以--remote选择

git submodule update --remote

继续前进?

好吧,...这仍然会更改子模块 SHA1 树,因此您仍然需要进行提交,但是只要您在父存储库中进行了自己的更改,就可以进行所述提交。

也许在本地你可以忽略它:

cd /parent/repo
git update-index --assume-unchanged -- submoduleFolder # no trailing slash

推荐阅读