如何防止 git 要求我提交子模块修改
How to prevent git asking me to commit submodule modifications
在我的存储库中,我通过
添加了一个子模块
git submodule add -b master https://something.something.git something
现在,每当我听到子模块(远程)有更新时,我都会这样做
git submodule update --remote
并且子模块在本地更新。如果我在某处克隆我的存储库,我会立即获得处于最新状态的子模块。
但是如果我在更新子模块后 运行 git status
在我的存储库中,我得到
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: something (new commits, modified content)
no changes added to commit (use "git add" and/or "git commit -a")
当我跟踪最新的分支时,为什么我需要提交子模块中发生的一些更改?正如我所说,如果我在其他地方克隆 repo,无论如何我都会立即获得更新的子模块,那么这个状态消息是关于什么的?
有没有办法让git忽略子模块的变化?
Git实际上是忽略了对子模块的更改,但是它确实记录了适合本次提交的子模块的版本。
例如,如果你在你的 repo 的分支 v1 和子模块的 v1 上,那么继续制作子模块的 v2 和你的 repo 的 v2(仅与 v2 兼容),那么如果你要将您的回购恢复为 v1,还需要恢复为使用子模块的 v1。 Git 不跟踪子模块的 v1 和 v2 之前发生的实际更改,而只是提交一个指向子模块所在提交的指针。
见
git help status
尝试
git status --ignore-submodules=all
有关“--ignore-submodules”的其他选项,请参阅文档
但是要从 SuperRepository 中获益,您应该像提交文件一样提交对子模块的更改。因此,提交记录了哪个子模块提交与 SuperRepository 文件一起处于活动状态。
这样如果你需要还原 SuperRepos,子模块也可以还原到相同的点。
在我的存储库中,我通过
添加了一个子模块git submodule add -b master https://something.something.git something
现在,每当我听到子模块(远程)有更新时,我都会这样做
git submodule update --remote
并且子模块在本地更新。如果我在某处克隆我的存储库,我会立即获得处于最新状态的子模块。
但是如果我在更新子模块后 运行 git status
在我的存储库中,我得到
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: something (new commits, modified content)
no changes added to commit (use "git add" and/or "git commit -a")
当我跟踪最新的分支时,为什么我需要提交子模块中发生的一些更改?正如我所说,如果我在其他地方克隆 repo,无论如何我都会立即获得更新的子模块,那么这个状态消息是关于什么的?
有没有办法让git忽略子模块的变化?
Git实际上是忽略了对子模块的更改,但是它确实记录了适合本次提交的子模块的版本。
例如,如果你在你的 repo 的分支 v1 和子模块的 v1 上,那么继续制作子模块的 v2 和你的 repo 的 v2(仅与 v2 兼容),那么如果你要将您的回购恢复为 v1,还需要恢复为使用子模块的 v1。 Git 不跟踪子模块的 v1 和 v2 之前发生的实际更改,而只是提交一个指向子模块所在提交的指针。
见
git help status
尝试
git status --ignore-submodules=all
有关“--ignore-submodules”的其他选项,请参阅文档
但是要从 SuperRepository 中获益,您应该像提交文件一样提交对子模块的更改。因此,提交记录了哪个子模块提交与 SuperRepository 文件一起处于活动状态。
这样如果你需要还原 SuperRepos,子模块也可以还原到相同的点。