标签: git-submodules

git:所有已更改文件的列表,包括子模块中的文件

我想获得所有文件的列表,这些文件已在两个提交之间发生了变化,包括子模块中的提交.

我知道我可以这样做:

git diff --name-only --diff-filter=ACMR ${revision} HEAD
Run Code Online (Sandbox Code Playgroud)

它返回一个文件列表,包括子模块路径,但不包括其中的文件.

示例:我更新了一个子模块.我提交了超级项目.现在我想获得已修改的所有文件的列表.

你知道如何完成这项工作吗?

git git-diff git-submodules

33
推荐指数
3
解决办法
2万
查看次数

如何将git repo中的特定文件夹添加为git子模块?

我有一个git repo,我想为它添加一个子模块.问题是,子模块作为另一个仓库内的文件夹存在.我可以只将该文件夹添加为子模块吗?

git git-submodules

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

为什么git无法获取给定提交的特定有效子模块以及如何修复它?

我有一个git回购,另一个作为submodule依赖.在我的项目的根(其中.git,.gitsubmodules等等都是)我叫

git submodule update
Run Code Online (Sandbox Code Playgroud)

此操作失败,并显示以下消息:

在子模块路径'src/framework'中获取,但它不包含cc8c38e9d853491c672452d8dbced4666fc73ec8.直接获取该提交失败.

在哪里src/framework是我的项目(PROJECT_ROOT/src/framework)的子目录,应该是第三方回购的地方.给定的提交哈希值是有效的.

我也尝试过,git clone --recursive <my-repo>但也失败了.

我的内容.gitsubmodules

[submodule "src/framework"]
        path = src/framework
        url = git@gitlab-blah-internal.de:gh/framework.git
Run Code Online (Sandbox Code Playgroud)

除此之外,我必须注意以下重要事实:由于最近的frameworkrepo 更新我的代码中断因此我真的需要检索它的特定版本,其中一切正常.

git git-submodules git-commit

32
推荐指数
4
解决办法
2万
查看次数

将git worktree与git子模块一起使用时会出现什么问题

我最近发现了这个git worktree命令:

新的工作目录链接到当前存储库,共享除工作目录特定文件(如HEAD,索引等)之外的所有内容.

但是文档也表明了这一点

...对子模块的支持不完整.建议不要对超级项目进行多次检出.

没有进一步解释什么是错误的.

有人可以告诉我有关预期的问题吗?例如,如果我使用以这种方式生成的单独工作树仅用于不影响子模块的更改,我会没事吗?

git git-submodules git-worktree

31
推荐指数
1
解决办法
4672
查看次数

31
推荐指数
1
解决办法
9795
查看次数

没有遥控器的嵌套git存储库(也就是没有遥控器的git子模块)

我有一个项目,我有兴趣将部分分解为开源.我已经在"main/one","main/two","main/three"中设置了一个"main"git存储库(例如,在"main"目录中)和子存储库.我认为通过进入"主要"并做

git add one
git add two
git add three
Run Code Online (Sandbox Code Playgroud)

(注意缺少尾部斜杠),我会设置子模块和子存储库,并且很好.

但是,正如Git中所述 - 如何跟踪未跟踪的内容?,这只会创建gitlinks而不是真正的子模块.

不幸的是,这个答案没有用,因为它假定在其他地方有"主要/一个","主要/两个"和"主要/三个" 的"主"存储库.我希望这些子仓库成为主存储库.我正在考虑假子模块(根据Git假子模块),但这对于克隆来说并不是特别理想的情况.

还有其他建议吗?

git git-submodules

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

git子模块不会在子模块中拉取文件

我认为我已经完成了这个新项目,并认为git子模块是开发和部署我的应用程序的方法.

设置我的git repo(Drupal)并用Drupal的7.12标签初始化它.做了我自己的分支.然后使用git submodule add -branch 7.x git:// path/to/drupal/module sites/all/modules/contrib/module添加sites/all/modules/contrib下所需的模块

然后我想,通过将我的repo推送到github,我可以简单地将其拉出然后将所有子模块拉入部署路径.但是,我的所有模块都没有拉,即使我这样做:git submodule foreach git pull或git submodule init后跟git submodule update

事实证明,我错了.我现在需要以另一种方式重做所有内容吗?如果是,请告诉我如果不是很好,请告诉我.

git pull file git-submodules

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

在.gitmodules中找不到路径的子模块映射

我跑的时候

git submodule update
No submodule mapping found in .gitmodules for path 'Classes/lib/AFKissXMLRequestOperation'
Run Code Online (Sandbox Code Playgroud)

但我Classes/lib/AFKissXMLRequestOperation目前的回购中没有子模块

我的git配置是:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:why_ios.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "External/ios-SDNestedTable"]
    url = git@github.com:why/ios-SDNestedTable.git
[submodule "External/PSStackedView"]
    url = git@github.com:why/PSStackedView.git
Run Code Online (Sandbox Code Playgroud)

和.gitmodules是:

[submodule "External/ios-SDNestedTable"]
    path = External/ios-SDNestedTable
    url = git@github.com:why/ios-SDNestedTable.git
[submodule "External/PSStackedView"]
    path = External/PSStackedView
    url = git@github.com:why/PSStackedView.git
Run Code Online (Sandbox Code Playgroud)

git version-control git-submodules

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

如何在git存储库中创建一个git子模块的现有目录

我对git-submodules很困惑.

基本上我的问题是我不能让git明白这~/main-project/submodule是一个子模块.


我对git子模块有很好的经验:
在我的dotfiles存储库中我创建了.gitmodules文件,~/dotfiles-repo并添加了路径和URL.从那时起,如果我对子模块中的文件进行更改并运行git status,我会得到类似的结果:.vim/bundle/auto-complete (new commits) # in red

我创建了.gitmodules文件~/main-project但是:

  • 如果我更改~/main-project/submodule,甚至推的变化,我没有得到这样一个类似的反应<submodule> (new commits) # in red中运行时git status~/main-project.我只是得到了在这些目录中所做的更改
  • 当我点击github这些目录的文件夹链接时,它并没有指示我自己的存储库,但我留在同一个存储库中.

    1. 也许我错过了重点.子模块的主要特征是什么?
    2. 为什么git理解dotfiles repo中的子模块而不是我的其他repo中的子模块?
    3. 是因为我已经告诉git将文件添加~/main-project/submodule到索引中吗?

我读过这个问题导致我得到了这个答案,但我不确定是否需要git-subtree.我不想做那些可能难以改变的事情.

编辑:这个建议的重复解决方案也不起作用,我收到了一个错误Updates were rejected because the remote contains work that you do not have locally.似乎@GabLeRoux几乎告诉我要推 …

git version-control git-submodules

30
推荐指数
3
解决办法
2万
查看次数

管理源代码管理下的代码使用的第三方源和二进制文件

我在源代码控制下有一个很大的代码库(是subversion,现在是git).为了编译代码并运行测试,我使用了一组第三方库.这些库可以分为几个类别L.

  • 仅限二进制文件
  • 第三方来源
  • 第三方来源+本地修改

每个库都有{Windows,Linux} X {调试,发布} X {32位,64位}配置.此外,这些库随着时间的推移而发展,我的项目的不同版本使用这些库的不同版本/构建.

我的问题是存储这些第三方的最佳方式是什么?

这是我的偏好设置:

  1. 保持项目源存储库的大小
  2. 保持项目源与第三方同步,这样我就可以随时编译和运行旧版本
  3. 易于管理
  4. 跨平台

我试过并考虑了几种解决方案,但都不令人满意:

  1. 使用版本化脚本从手动管理的ftp服务器获取二进制文件,该服务器包含所有版本的库.这可行,但需要仔细管理服务器上的目录结构.由于有人可能会使用新版本覆盖其中一个二进制文件,因此容易出错.
  2. SVN外部 - 当时SVN外部无法引用特定标签.今天我正在使用git.
  3. Git子模块 - 拉动整个外部存储库,这可能是巨大的.或者,它需要为每个库管理一个单独的存储库.在一个特定的标签的子模块点,这意味着要么我得到的所有外部组件,当我需要一部分还是我模仿git的树一些奇怪的文件系统.

我很清楚,第三方来源需要存储在供应商分支中的git中,但二进制文件和标题是不同的故事.

git git-submodules git-subtree

29
推荐指数
1
解决办法
7542
查看次数