我在一个名为“视频”的目录中有一堆视频。我把那个不幸的大文件夹提交给git,导致git对某些活动(如克隆)变得非常慢。所以我做了一些研究并发现了git子模块,但我似乎并不太了解它们。
这就是我的所作所为:
我将视频作为子模块添加回来了:
git submodule add ssh://dev.example.org/var/git/project/microsite_videos videos
我将这些更改提交给了主人。
这是我的.gitmodules文件:
[submodule "videos"]
path = videos
url = ssh://dev.example.org/var/git/project/microsite_videos
起初它似乎工作正常,但我对它的某些行为感到困惑。特别是,刚才我将master合并到一个分支中,视频文件夹就消失了。 .gitmodules文件仍然存在,但任何拉动或更新视频文件夹的尝试只会给我一个新的提示,而不会做任何事情。
我做错了什么,怎样才能提高对子模块的理解,这样每次尝试分支和合并时都不会挣扎?
答案 0 :(得分:0)
不要忘记子模块只是指向特定仓库的特定提交的指针 请参阅“Git submodules: Specify a branch/tag”。
这意味着,在合并之后,您仍然拥有指针(在.gitmodules中并作为树中的特殊条目),但您需要git submodule update
才能刷新子模块内容。
如果更新失败,请参阅“Git submodule head”。