标签: git-submodules

如何告诉Travis跳过所有git子模块?

在我的项目中,我有一些git子模块,但是这些不是实际的构建依赖项,并且需要花费一些额外的时间才能进入,可能会使构建时间增加一倍或三倍.

有没有办法告诉特拉维斯跳过这个无用的步骤?

git-submodules travis-ci

26
推荐指数
1
解决办法
1689
查看次数

git按子文件夹拆分存储库并保留所有旧分支

我有一个带有2个目录和多个分支的git仓库,我想拆分它们并创建所有分支

`-- Big-repo
    |-- dir1
    `-- dir2

Branches : branch1, branch2, branch3 ...
Run Code Online (Sandbox Code Playgroud)

我想要的是

我想将dir1和dir2拆分为两个独立的repos并在两个存储库中保留branch branch1,branch2 ....

dir1
Branches : branch1, branch2, branch3 ...

dir2
Branches : branch1, branch2, branch3 ...
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:

我能够将它们分成2个回购

git subtree split -P dir1 -b dir1-only 
git subtree split -P dir2 -b dir2-only 
Run Code Online (Sandbox Code Playgroud)

但是,分离后不会创建任何分支.

要获得所有分支:

git checkout branch1 (in Big-repo)
git subtree split -p dir1 -b dir1-branch1

git checkout branch2 (in Big-repo)
git subtree split -p dir1 -b dir1-branch2

And push these branches to newly created …
Run Code Online (Sandbox Code Playgroud)

git git-submodules git-filter-branch git-subtree

26
推荐指数
2
解决办法
6732
查看次数

Git Submodule到子文件夹

在svn中,您可以将存储库链接到另一个svn存储库中的任何文件夹.我想知道git是否有类似的功能?基本上我想在我的存储库中有一个git子模块,但我希望子模块是指向另一个git存储库的子文件夹的指针,而不是整个存储库.这可能吗?

git dvcs git-submodules

25
推荐指数
2
解决办法
8023
查看次数

如何将带有分离HEAD的子模块附加到实际的HEAD?

当我将Git子模块添加到这样的Git存储库时,

git submodule add ssh://server/proj1/ proj1
git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)

添加的子模块将处于分离的HEAD模式.我不知道那是什么,但我知道子模块将链接到目标存储库的特定修订版.

我不知道它是如何工作的,无论如何它看起来像是一个代理分支.我通过切换到master分支解决了这个问题.

cd proj1
git checkout master
Run Code Online (Sandbox Code Playgroud)

这将切换当前分支实际主HEAD,但这不会更新链接.因此,如果再次克隆整个存储库,它仍将链接到旧版本.

如果我想让它始终与最新版本(HEAD)相关联,我该怎么办?

git git-submodules

25
推荐指数
1
解决办法
2万
查看次数

Git:可以通过多个项目使用相同的子模块工作副本吗?

我是Git的新手.可以说,我有两个git存储库,它们添加了与子模块相同的库:

/home/projects/project1/library_XYZ
/home/projects/project2/library_XYZ
Run Code Online (Sandbox Code Playgroud)

还可以说,我正在同时处理项目库.当我对库进行更改时,让我们说/home/projects/project1/library_XYZ,我必须推送这些更改,然后将它们拉入/home/projects/project2/library_XYZ以使它们可用project2,对吧?我认为这是不方便的,原因有两个:

  • 我将要建library_XYZ两次.
  • 我有一个不需要的冗余,与实际的项目组织相矛盾.

有没有办法让Git克隆子模块library_XYZ同一个本地目录,即使文件像这样组织

/home/projects/project1
/home/projects/project2
/home/projects/library_XYZ
Run Code Online (Sandbox Code Playgroud)

同时library_XYZ仍然是两个项目的子模块?

我认为这可能与有关,虽然我的设置有些不同,但是没有答案.

git git-submodules

25
推荐指数
2
解决办法
7084
查看次数

无法从git子模块推送提交?

我有一个简单的项目,有一个子模块.

$ git submodule
 964737623a362f6303e87ec41f2c7090c8c2c093 lib/mongodb-php-odm (heads/master-1-g9647376)
Run Code Online (Sandbox Code Playgroud)

我已经对该子模块进行了更改并提交了它们,但是无法将它们推送到github.

$ cd lib/mongodb-php-odm
$ git branch
* (no branch)
  master
$ git remote -v
origin  git@github.com:colinmollenhour/mongodb-php-odm.git
$ git ls-remote .
964737623a362f6303e87ec41f2c7090c8c2c093    HEAD
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/heads/master
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/remotes/origin/HEAD
6f5f91eff9b1854faa30608f335aee92aa7532eb    refs/remotes/origin/master
$ git push origin master
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它说"一切都是最新的",因为964737提交还没有被推送到github.我可能做错了什么,但我不知道会是什么......

如何将此子模块中的最新提交推送到github?

git github git-submodules

24
推荐指数
2
解决办法
7586
查看次数

我可以在git-ignored文件夹中有一个嵌套的git repo吗?

我有一个git repo,它有以下文件夹:

 _includes/
 _layouts/
 _plugins/
 _posts/
 _site/
Run Code Online (Sandbox Code Playgroud)

_site文件夹已添加到.gitignore文件中.

现在,我可以在_site文件夹中使用不同的远程仓库进行推送和拉取的git repo吗?会有冲突吗?

我已经研究过git子模块,但我认为如果上述方法可行,那么在我的情况下这将是一种矫枉过正.

git github git-submodules

24
推荐指数
2
解决办法
4528
查看次数

如何递归地检查包括所有子模块的旧git提交?

我有一个包含多个子模块的git repo.其中一个子模块有自己的多个子模块.我要做的就是检查主仓库上的旧提交,并检查所有子模块的相应提交,以获得当时代码的正确状态.

我知道git包含必要的信息,因为ls-tree命令可以告诉我每个子模块所在的提交.但是,我必须手动检查每一个,这是非常耗时的.

我正在寻找类似的东西,git checkout --recursive但这样的命令似乎并不存在.

反正有没有这样做?

git git-submodules

24
推荐指数
3
解决办法
1万
查看次数

NuGet和Git子模块

我已经广泛搜索了一个解决方案,尝试了不同的方法但没有工作,所以我在这里问.

我目前需要的是拥有单独的Git存储库,每个存储库包含一个带有相关项目的.Net解决方案文件.这些存储库中的一个或多个将仅包含类库,我需要在其他存储库解决方案中使用这些库.

我的第一个是使用Git子模块来避免难看的复制粘贴,并且在开发应用程序时仍然可以使用类库的源代码.

所以我的尝试是包含子模块,然后在我当前的解决方案中"添加现有项目"并加载所需的类库(ies).

我无法克服的巨大问题是Nuget包恢复.导入的项目引用"..\Packages*"中的库,但是当作为子模块导入时,它们位于另一个子文件夹中,因此无法找到所需的依赖项:

- MySolution.sln
- Packages folder
- MyAppProject folder
- Submodule folder
-- EXPECTED packages folder for MyLibraryProject that I cannot generate
-- MyLibraryProject folder
Run Code Online (Sandbox Code Playgroud)

我找到并试过的一个解决方案就是这个,但它有两个主要问题:

  • 它应该使用MsBuild包恢复工作,我绝对不想使用它
  • 即使尝试使用MsBuild包恢复它根本不起作用,我仍然在我当前的解决方案文件夹中有一个Packages文件夹.也许我做错了但又一次,我不想使用MsBuild方法.

现在我真的想知道是否有一个干净的方法来解决这个问题,或者我唯一能做的就是放弃在我的应用程序解决方案中提供库源代码并在私有NuGet提要和参考上发布我的库他们从那里.

谢谢.

.net git git-submodules nuget nuget-package-restore

24
推荐指数
2
解决办法
2535
查看次数

如何公开使用子模块,但是在本地使用符号链接到单个克隆?

我有我的第一个Git Submodule体验.

我有一些项目依赖于同一个子项目.我保持这些项目同步,所以我使用"子模块分支"功能(例如git submodule add -b master [URL]).

虽然我希望公共GitHub存储库传达子模块关系,但在我自己的工作流程中,我真的只想在我的磁盘上有一个共享代码库的克隆.我想我可以设置子模块,然后用符号链接做一个切换器.但是当我这样做时,我得到了这个:

On branch 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)

    typechange: draem
Run Code Online (Sandbox Code Playgroud)

所以Git显然认为它是一个符号链接,而不是跟随目录.

是否有任何工作流程,我似乎可以使用子模块,但我的本地文件系统上只有一个克隆?

git symlink git-submodules

23
推荐指数
2
解决办法
3378
查看次数