Tag: git submodules

如何在一行中的所有子模块上git clone –recursive和checkout master?

我真的很喜欢这个命令来获取子模块的回购: git clone git@github.com:my_user/my_repo.git –recursive 然而,子模块到达时都设置为“不分支”,我必须手动对每一个主模块进行结账。 有没有办法recursion拉子模块,并自动将分支设置为主?

github子模块访问权(Travis CI)

无法更新git子模块。 有错误: $ git submodule init Submodule 'build/html' (git@github.com:quadroid/clonejs.git) registered for path 'build/html' … $ git submodule update Cloning into 'build/html'… Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts. Permission denied (publickey). fatal: Could not read from remote repository. 完整的日志: https : //travis-ci.org/quadroid/clonejs/jobs/5855553 但是当我在本地执行相同的任务时,一切正常。

我怎么能得到一个git子模块相关的提交ID从父克隆过去的提交?

有没有一种方法,实际检查父提交,根据父克隆中的提交ID来确定子模块的SHA-1提交ID? 我知道我可以通过'git submodule'find当前关联的SHA-1。 下面是一个例子:我有一个在上个月更换了几次的单个子模块“foo”的克隆。 我在几个星期大的父克隆中有一个标签叫'released-1.2.3'。 我想知道这个标记提交的相关SHA-1的'foo'是什么。 我可以简单地检查一下'released-1.2.3'并使用git-submodule来查看,但我想知道是否有办法在不影响工作树的情况下执行此操作,因为我想对其进行编写。 我想这样做是因为我想要构build一个脚本来对父库中的两个提交之间的子模块内的所有更改进行“差异化” – 即“告诉我在这两个提交之间的子模块”foo“中更改了哪些文件父母“。

git子模块修改了文件状态

我在我的主git文件夹树中添加了一个子模块,并没有改变任何东西,但它显示已修改。 我该怎么做? $ git status # 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) # # modified: example.com/soundmanager # no changes added to commit (use "git add" and/or "git commit -a") 我已经尝试了一个git子模块更新,但它什么也没有做。

什么是子模块分叉的良好工作stream程

假设我们在github上有下面的仓库结构: company:project.git \- company:submodule.git 我公司的一名开发人员推动公司项目,使他的工作空间如下所示: developer:project.git \- company:submodule.git 这对于90%的开发者来说是好的,因为他们不改变子模块库,他们只在项目中工作。 现在假设有一个新function需要改进子模块。 负责此事的开发人员将其工作区转换为: developer:project.git \- developer:submodule.git 到达那里并不是微不足道的,因为他需要用另一个子模块replace一个子模块(git,子模块的原始和叉子是两个不同的东西)。 如果这个开发者在库上工作了一段时间,他将这个结构提交给他的主分支,所以他在github上的分支总是使用分叉的子模块。 一旦他准备好发展,他会创build一个拉请求。 问题在于,合并pull请求时,主存储库看起来像这样: company:project.git \- developer:submodule.git 这是有问题的,因为现在每个跟踪公司分支的开发人员都将以开发人员的子模块结束。 为了解决这个问题,在开发者提出pull请求之前,他的主分支应该移回公司:submodule.git – 这非常尴尬,特别是因为在本地他总是想和developer:submodule一起工作。饭桶。 我们已经尝试了几个工作stream程,上述问题是唯一一个我们没有良好工作stream程的问题。

Git嵌套的子模块和依赖关系

假设我有四个名为Core , A , B , Super的项目 。 依赖关系树是这样的: Super —> Core |-> A -> Core |-> B -> Core 我希望每个项目都是独立的,也就是说,我希望能够自行签出和编译每个项目(每个项目都有自己的依赖关系)。 我想过将每个项目映射到一个存储库,然后引用与子模块的依赖关系,但是我看到了以下问题: 当检查Super的所有依赖关系时,我最终会得到三个Core的副本。 由于子模块是完全独立的,所以这三个副本中的每一个都可能指向Core的不同版本,这将是一团糟。 所以…我错过了什么? 我误解了git submodules还是误用了它们? 有没有其他解决这个问题(除了求助于二进制依赖)?

Git提交到公共子模块(master分支)

我有两个或两个以上的项目(让我们称之为ProjectFoo和ProjectBar )具有一些通用的代码 ,我把它们放在一个子模块中 。 我的理解是,如果我从ProjectFoo内部对子模块提交更改,它将会是一个独立的头,只有所有ProjectFoo克隆可以看到: (master) $ cd ProjectFooBarCommoneSubmodule/ (master) $ git commit -am "Common code fix." (56f21fb0…) $ git push Everything up-to-date 这可能是因为master分支没有改变。 我可以做一些像git checkout master && git merge Everything up-to-date但看起来很丑。 可能是一个git reset –hard master做同样的事情,但似乎更丑陋。 如何让项目共享一个共同的代码, 在使用它的项目中进行更新? 换句话说,对该子模块的提交应该更新所有使用同一个子模块的各种存储库( 存储库,而不仅仅是克隆 )。 —-编辑—- 显然,我的签出库被搞砸了。 它应该从一开始就这样工作(在这个例子中是ProjectFoo ): (master) $ cd ProjectFooBarCommoneSubmodule/ (master) $ git commit -am "Common […]

无法跟踪Git子模块中的文件

问题:当./.git/info/exclude或任何.gitignore -files文件./shells/smallApps/* ,在./shells/smallApps/*将./.git/文件添加到Git。 这个问题是基于这个问题没有完全解决的问题。 我跑 $git status ~/bin # On branch master nothing to commit (working directory clean) $git ls-files ~/bin Screen/dev/vim-open.screen — cut — 我注意到我的Git没有“shells / smallApps / *”文件 $ls shells/smallApps/ ~/bin devTodo extract ~/bin 我想通过运行将它们添加到我的Git中 $git add shells/smallApps/devTodo shells/smallApps/extract fatal: Path 'shells/smallApps/devTodo' is in submodule 'shells/smallApps' $git add . 我注意到这些文件没有添加到我的Git出于某种原因 $git status ~/bin […]

如何从git子模块中只克隆一个文件夹?

我试图从外部github回购只是从我的项目中使用的文件夹。 我想我的项目设置是这样的: -my_project -submodule -code.py -MY_README -.git 我有一个远程回购命名一些子模块具有以下结构: -submodule -code.py -README -.gitignore 所以我只想把子模块文件夹添加到我的项目中。 但是我后来结束了 git submodule添加http://github.com/user/submodule.git子模块 -my_project -submodule -submodule -code.py -README -.gitignore -MY_README -.gitignore 我是新来的混帐,所以我真的不知道是否有可能使用混帐。 如果有一些帮助,我在Windows上使用msysgit。 那么,无论如何,我可以从公共回购项目中获得一个干净的子模块文件夹? 如果你很想知道我想要做什么,我试图直接从他们的回购这些Django插件1 2将它们添加到我的项目。

回顾性地添加 – 对git回购的recursion

如果你使用–recursive git clone ,你也可以得到所有的git子模块。 如果我忘记在克隆时添加这个神奇的旗帜,那么我该如何去获得任何子模块? 另外,如何将recursion标志设置为未来克隆的默认值?