我试图将子模块放入回购.问题是当我克隆父repo时,子模块文件夹是完全空的.
有没有办法让它git clone parent_repo实际上把数据放在子模块文件夹中?
例如,http://github.com/cwolves/sequelize/tree/master/lib/,nodejs-mysql-native指向在外部git的子模块,但是当我结账的sequelize项目,该文件夹为空.
我们使用git子模块来管理一些依赖于我们开发的许多其他库的大型项目.每个库都是作为子模块引入依赖项目的单独repo.在开发过程中,我们经常想要抓住每个依赖子模块的最新版本.
git有内置命令来执行此操作吗?如果没有,Windows批处理文件或类似文件怎么样呢?
我已经创建了一个带有子模块的git存储库.我能够告诉子模块本身更改其远程存储库路径,但我不知道如何告诉父存储库如何更改子模块的远程存储库路径.
如果我有点不幸并且必须手动操作,我不会感到惊讶,因为即使删除子模块也不容易.
我不清楚以下是什么意思(来自git submodule update docs):
...将使子模块HEAD分离,除非
--rebase或--merge指定...
怎么--rebase/ --merge改变事情?
我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).
将单个远程分支作为本地分支进行跟踪非常简单.
$ git checkout --track -b ${branch_name} origin/${branch_name}
Run Code Online (Sandbox Code Playgroud)
将所有本地分支推送到远程,根据需要创建新的远程分支也很容易.
$ git push --all origin
Run Code Online (Sandbox Code Playgroud)
我想反过来.如果我在一个源上有X个远程分支:
$ git branch -r
branch1
branch2
branch3
.
.
.
Run Code Online (Sandbox Code Playgroud)
我是否可以为所有远程分支创建本地跟踪分支,而无需手动创建每个分支?说出类似的话:
$ git checkout --track -b --all origin
Run Code Online (Sandbox Code Playgroud)
我用google搜索和RTM,但到目前为止已经上传了.
有人可以解释一个"跟踪分支",因为它适用于git?
这是git-scm.com的定义:
Git中的"跟踪分支"是连接到远程分支的本地分支.当您按下并拉动该分支时,它会自动推送并拉到与其连接的远程分支.
如果您始终从同一个上游分支拉入新分支,并且您不想明确使用"git pull",请使用此选项.
不幸的是,对于git和来自SVN的新手来说,这个定义对我来说绝对没有意义.
我正在阅读" Git的实用指南 "(顺便说一句好书),他们似乎建议跟踪分支是一件好事,并且在创建第一个遥控器(原点,在这种情况下)后,你应该将您的主分支设置为跟踪分支,但遗憾的是,它不包括为什么跟踪分支是一件好事,或者通过将主分支设置为原始存储库的跟踪分支而获得的好处.
有人可以赐教(英文)吗?
有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:
Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.
为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?