标签: git-submodules

具有多个模块的git存储库结构

我有以下情况:

  1. 有4-5个不同的软件模块是更大的软件项目的一部分.
  2. 所有这些都被设置为单独的git repos.
  3. 当我提交一个功能时,通常它跨越多个模块 - 从而为每个模块进行例如2或3次提交.

给我一个更大项目的多个模块的想法.你喜欢使用git子模块吗?如果是的话,以什么方式使用?或者您是否为项目使用主文件夹,例如:

Software_Project
   Module_1
   Module_2
   Module_3
   Module_4

任何关于适当的git repo结构的想法都是受欢迎的.

git repository git-submodules

7
推荐指数
1
解决办法
2646
查看次数

darcs相当于git的子模块?

所以,只是想知道darcs是否有与git的子模块相同的东西.

也就是说我有一个回购(myapp),我有一个名为mylibrary的文件夹.mylibrary与myapp的开发没有任何关系,只需要包含它.mylibrary的开发发生在它自己的回购中,但当有人拉动myapp时,它也会提供最新版本的mylibrary.有任何想法吗?

darcs git-submodules

7
推荐指数
1
解决办法
309
查看次数

git rm -r --cached不删除子模块文件夹和内容

解决方案:--cached从中删除git rm -r --cached submodule/name. 脚本供参考.


我正在尝试根据此SO答案删除git子模块,但子模块未被删除.

我添加子模块,提交更改,然后使用git rm -r --cached $path/to/submodule(减去尾随/)删除它,提交更改,但子模块仍然存在.

我可以rm -rf submodules/lift_sbt_24用来删除文件夹和内容,但为什么不git rm -r --cached这样做呢?

(从.gitmodules删除相关部分工作正常,没问题,因此这里没有提到)

这是Ubuntu 11.10上的git 1.7.5.4,fwiw.完整的例子:

$> git submodule add git@github.com:lift-stack/lift_24_sbt.git submodules/lift_24_sbt
Adding submodule from repo git@github.com:lift-stack/lift_24_sbt.git as submodules/lift_24_sbt
Cloning into submodules/lift_24_sbt...
remote: Counting objects: 619, done.
remote: Compressing objects: 100% (375/375), done.
remote: Total 619 (delta 172), reused 593 (delta 147)
Receiving objects: 100% (619/619), 1.74 MiB | 112 KiB/s, …
Run Code Online (Sandbox Code Playgroud)

git git-submodules

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

下载tar包的git子模块

是否可以下载仅包含工作目录的存储库的子模块?

如果我从GitHub下载存储库的tarball,这相当于没有该.git文件夹的浅层克隆,是否可以将子模块"下载"到工作目录中?

我试过git init && git submodule update --init,但这既没有初始化也没有更新子模块.该.gitmodules文件位于当前目录中.

更新:关于这个问题的更多背景:我们想使用tarball来检查Travis CI的存储库,但是有些人使用git子模块.因此,"不要使用Git子模块"不是一个好的答案,但答案实际上也不一定是可维护的.我只想要一个已检出代码并初始化子模块的文件夹,不需要任何允许我稍后进行更多更改的内容.

git github git-submodules

7
推荐指数
1
解决办法
771
查看次数

如何git grep主存储库及其所有子模块?

我在博客上发现了grep项目和子模块:

[alias]
  sgrep = "!f() { git grep \"$1\"; git submodule foreach \"git grep '$1'; true\" | grep -B 1 \"$1\"; }; f"
Run Code Online (Sandbox Code Playgroud)

我更新了我~/.gitconfig的包含它,但是当我使用别名时,它说:

fatal: bad config file line 9 in /home/myname/.gitconfig

我究竟做错了什么?

git grep git-submodules

7
推荐指数
2
解决办法
1453
查看次数

恢复删除的子模块

假设我有一个子模块dir1/dir2(通过下面显示的步骤创建)。dir2删除子模块后如何恢复它?

git submodule update抱怨子模块不存在,并git reset HEAD --hard恢复dir2但不恢复其内容。我正在以下列方式创建子模块:

mkdir dir1
cd dir1/
mkdir dir2

cd dir2/
touch 1.txt
git init
git add 1.txt
git commit -m "test"

cd ..
git init
git submodule add ./dir2/
git commit -m "adding submodule"

rm -r dir2
**** Now how do I restore dir2 and its contents? ****
Run Code Online (Sandbox Code Playgroud)

git git-submodules

7
推荐指数
2
解决办法
6213
查看次数

如何在Python中从子模块安装依赖项?

我有一个具有以下结构的Python项目(为简单起见,省略了相关的源文件):

myproject/
    mysubmodule/
        setup.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

该文件myproject/setup.py用于distutils.core.setup安装模块myproject和相关源.但是,myproject需要mysubmodule安装(这是一个git子模块).所以我现在正在做的是:

myproject/$ cd mysubmodule
myproject/mysubmodule/$ python setup.py install
myproject/mysubmodule/$ cd ..
myproject/$ python setup.py install
Run Code Online (Sandbox Code Playgroud)

这对客户来说太单调乏味,特别是如果将来通过更多子模块扩展该项目.

有没有办法mysubmodule在调用时自动安装myproject/setup.py?

python distutils git-submodules

7
推荐指数
2
解决办法
3367
查看次数

如何在另一个git存储库中提交git存储库

我正在开发一个使用git的应用程序,所以我需要测试它与git的集成.在我的git存储库中,我需要有另一个存储库(my_git_repo/tests/another_repo).如何在没有git子模块的情况下提交它?(我不希望只有一个文件的另一个远程存储库(在github/bitbucket等))

有任何想法吗?

git commit github git-submodules

7
推荐指数
1
解决办法
1427
查看次数

与“ git子模块吸收gitdirs”相反/相反?

我该怎么做git submodule absorbgitdirs呢?即将子模块的.git信息移出目录superproject/.git/modules/<module>并移回superproject/path/to/<module>/.git目录?

我还是想<module>成为的一个子模块superproject,我只是不想<module>的.git目录信息superprojects'的.git/modules目录。

git git-submodules

7
推荐指数
2
解决办法
1114
查看次数

Git checkout分支并修剪与之前结账相关的所有内容(包括git-lfs)

我有一个包含多个子模块的超级项目的回购.两者的大量文件都在Git LFS中.

repo带有多个长期发布分支.

问题

完整克隆传输20 GB的Git和Git LFS对象.

check of master将总repo总计减少到40 GB,即对象和工作树文件在一起.

让我们考虑三个单独的克隆作为规范的方式来创建三个工作副本,每个长寿分支一个:

git clone --branch master      --recursive --jobs 8 https://repo repo_master
git clone --branch release/1.0 --recursive --jobs 8 https://repo repo_release1
git clone --branch release/2.0 --recursive --jobs 8 https://repo repo_release2
Run Code Online (Sandbox Code Playgroud)

我正在尝试研究上述网络优化的等价物: - 使用默认主机克隆一次克隆 - 制作克隆存储库的多个副本 - 结帐发布分支

问题

  1. 如何签出从远程获取的现有分支,删除以前的分支并清理剩余的分支?

  2. 如何清理与先前检出的主机及其工作树相关的所有内容,任何缓存的先前LFS下载等?

但是,要保持原产地/主人的历史.

解决方案原型

以下是我为网络优化工作流程提出的建议:

git clone --branch master --recursive --jobs 8 https://repo repo_master

cp -a repo_master repo_release1
cp -a repo_master repo_release2

cd repo_release1
git checkout -b release/1.0 --track origin/release/1.0

git pull
git …
Run Code Online (Sandbox Code Playgroud)

git git-checkout git-submodules git-lfs

7
推荐指数
1
解决办法
235
查看次数