如果你git clone有--recursive,你也可以得到所有的git子模块.
如果我忘记在克隆时添加这个神奇的旗帜,可能会发生,我现在如何去获取任何子模块?
此外,如何将递归标志设置为将来克隆的默认标志?
我很高兴使用子模块来跟踪我的项目所依赖的所有库.问题是我正在使用一个名为core-plot的库,它只有一个公共的mercurial存储库.我可以在一个只读的Git存储库中镜像它,但这是我得到的最佳选择吗?我曾经看到Mercurial中有模块来跟踪Git中的内容.有人知道是否存在相反的方式?
当我运行时git submodule init,我收到以下错误:
在.gitmodules中找不到路径'xxx'的子模块映射
我搜索了一个.gitmodules文件,我无法在任何地方找到它.
我已经在同一主题上阅读了这个最受欢迎的SO问题.但不幸的是,我无法解决问题.特别是考虑到我不再拥有.gitmodules.
根据我的GitHub私人仓库,我仍然有我的存储库的子模块.只是我无法在.gitmodules任何地方找到该文件.
我最近重组了我的dotfiles,住在一个Git存储库中~/Dropbox/dotfiles,我正在使用病原体将所有Vim插件捆绑在里面~/Dropbox/dotfiles/home/.vim/bundle.这些插件作为Git子模块添加.
现在的问题是,当我运行Vim时,它会自动生成所有插件的文档,并将它们放在每个子模块目录中.这会将未跟踪的内容添加到子模块中,我希望避免这些内容.
ruby-1.8.7-p330@gs ~/Dropbox/dotfiles ‹master*› $ git st
# On branch master
# Changed but not updated:
# (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: home/.vim/bundle/fuzzyfinder (untracked content)
# modified: home/.vim/bundle/l9 (untracked content)
# modified: home/.vim/bundle/matchit (untracked content)
# modified: home/.vim/bundle/ruby (untracked content)
# ...
no changes …Run Code Online (Sandbox Code Playgroud) 我有两个或更多的项目(我们称之为ProjectFoo和ProjectBar),它们有一些我放在子模块中的公共代码.
我的理解是,如果我从ProjectFoo中提交子模块的更改,它将处于一个独立的头部,只有所有ProjectFoo克隆才能看到:
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(56f21fb0...) $ git push
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)
这可能是因为master分支没有改变.我可能会做类似的事情git checkout master && git merge Everything up-to-date但看起来很难看.可能git reset --hard master会做同样的事情,但似乎更加丑陋.
如何使用项目共享的公共代码,从使用它的那些项目中更新?换句话说,提交到该子模块应该更新使用同一子模块的所有各种存储库(存储库,而不仅仅是克隆).
----编辑----
可见我的签出存储库搞砸了并且坏了.它应该从一开始就像那样(在本例中的ProjectFoo上):
(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(master) $ git push
....
fbfdd71..0acce63 master -> master
(master) $ …Run Code Online (Sandbox Code Playgroud) 我喜欢git子模块.另外,我讨厌git子模块.我喜欢他们的是它如何使你能够干净地划分依赖关系等等.我明白让他们指出一个回购的特定提交,我这样做.但在我的情况下,我正在构建一个将在另一个项目中使用的库,所以我想把它保存在那个单独的repo中.
然而,当我每天在这个库上工作时,烦恼就来了,我不得不使用我的库切换回app来提交指针更新.
那么,当我不断更新并添加到这个库时,是否有可能让git子模块始终位于它所指向的repo的头部?
因此,更新我的所有子模块都是通过运行来完成的
git submodule foreach 'git pull origin master'
Run Code Online (Sandbox Code Playgroud)
如何在不更新任何其他子模块的情况下更新特定的子bundle/syntastic模块?
问题:当我没有文件时,也没有任何文件时,将文件添加./shells/smallApps/*到Git ../.git/./.git/info/exclude.gitignore
这个问题是基于这个问题没有完全解决的问题.
我跑
$git status ~/bin
# On branch master
nothing to commit (working directory clean)
$git ls-files ~/bin
Screen/dev/vim-open.screen
--- cut ---
Run Code Online (Sandbox Code Playgroud)
我注意到我的Git上没有"shells/smallApps/*"文件
$ls shells/smallApps/ ~/bin
devTodo extract
~/bin
Run Code Online (Sandbox Code Playgroud)
我想通过运行将它们添加到我的Git中
$git add shells/smallApps/devTodo shells/smallApps/extract
fatal: Path 'shells/smallApps/devTodo' is in submodule 'shells/smallApps'
$git add .
Run Code Online (Sandbox Code Playgroud)
我注意到由于某种原因,这些文件没有添加到我的Git中
$git status ~/bin
# On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
我没有.git/info/exclude和.gitignore -files的文件.
最后警告是什么意思?
我有一个项目已经指定了子模块.开发机器上的一切都运行良好.我已经.gitmodules提交文件并继续制作.但它没有拉出子模块.
如果我进入子模块目录并调用git pull,则没有任何反应.
在新项目中提取这些子模块的正确方法是什么?
我有git repo,它有嵌套的子模块.以下2个命令有什么区别?
git submodule update --init --recursive
git submodule foreach --recursive git submodule update --init
Run Code Online (Sandbox Code Playgroud)