我有一个包含各种嵌套子模块的存储库.提交和推送工作非常顺利,并且GitHub上的更改可以按预期显示.
在测试/生产环境中,使用以下命令部署此项目的新版本:
git pull --recurse-submodules
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
但这仅更新根项目,没有子模块更新为与GitHub上的HEAD相关联的提交.到目前为止,我发现更新整个项目的唯一方法是git pull在每个单独的子模块文件夹中运行.
我理解这git submodule update是大多数地方引用的方法,但在这种情况下它并没有真正产生任何结果.可能是什么原因?
我有源代码(大部分的存储库*.php,*.js)和文档文件(主要是*.md,*.html,*.svg)自动从注释生成.所有文档都位于./doc存储库中的单独子目录()中.
一方面,我希望通过跟踪文档,git如果它发生变化,我希望它被提交/推送到服务器,因为它有一个很好的可浏览和最新文档很不方便由github显示.
另一方面,在输出git diff命令期间看到自动生成的文件是非常烦人的.例如,如果在两次提交之间更改了一行源代码,则git diff不仅会输出此单行,而且还会输出所有自动生成的文档,因为整个自动生成的文档已更改.
有没有办法告诉git跟踪文档但diff默认情况下将其排除?如果git将所有文档文件视为blob,我也会对我好.然后,至少diff只会声称文件已更改,但不会显示所有文档行每行.
我得到了git子模块(一厢情愿的想法?),我想出更具体的问题,这是一个好兆头......
我试图找到超级项目引用的子模块的哪个版本,在.gitmodules和中.git/config,但是没有提到......
场景是我正在更改其根位置(从中导入它们)的子模块,然后将它们拉入"子模块化"的位置......
除了从超级项目中提交以将这些更改合并到超级项目仓库之外,我是否还需要git update注册新的拉入式子模块提交?
基本上问题是:
git submodule update只有当我第一次克隆超级项目时,或者每次拉动子模块(来自它自己的回购)后,我才需要" "吗?
谢谢
我们希望在多个项目中使用相同的构建系统.我有一个工作早午餐配置文件,我想放在一个git子模块中,以便可以在多个项目中引用该子模块,并且更改很容易传播(比复制和粘贴更不易碎,并设置brunch-config.js的权威来源) .
将brunch-config.js放在git子模块中会导致我的文件夹结构如下所示:
WebApp // git root
|---Brunch-Build-System // git submodule
| |---brunch-config.js
|---node_modules
|---source // all the source code I want compiled
Run Code Online (Sandbox Code Playgroud)
早午餐运行假设brunch-config.js将与正在编译的源相同或更高.在此设置中,情况并非如此.我已经尝试修改我的brunch-config.js使用相对路径无济于事.这是我files目前的Brunch配置块,没有任何相对路径尝试:
files: {
javascripts: {
joinTo: {
'js/lib.js': /^(?!source\/)/
},
entryPoints: {
'source/scripts/app.jsx': {
'js/app.js': /^source\//
},
}
},
stylesheets: {joinTo: 'css/core.css'}
}
Run Code Online (Sandbox Code Playgroud)
如果上面给出了所需的文件夹结构,我如何修改它以使用相对路径?这甚至可能吗?
我想获取指定子模块的当前提交ID.我想当我进入子模块目录并运行git rev-parse HEAD后,我发现这是一个超级项目当前ID.git submodule status | grep <submodule_name>也试过,但它对我来说很慢.知道如何更快地获取这些信息吗?
我拉了一个GitHub存储库并将其添加为VisualStudio中的项目.VS解决方案包含我在第一个项目中对存储库所做的修改所需的其他项目.目前,这些是单独的存储库:
my_solution (<- this should become my new repo without losing the possibility to pull changes from the original repository into locally_forked_project)
locally_forked_project (repo)
dependency1 (repo)
dependency2 (repo)
Run Code Online (Sandbox Code Playgroud)
现在,我想基于我的VS解决方案在GitHub上创建一个原始项目的分支.我希望能够从原始存储库中提取提交,我希望避免在GitHub上使用多个存储库.
我知道的唯一方法是子模块,但据我所知,这些将需要GitHub上的多个存储库.有这个问题的解决方案吗?
这有可能吗?有没有其他方法可以使用多个存储库?
我发现了这个问题:How can I have linked dependency in a git repo?
关于如何将存储库添加为子模块,但我不确定如何将特定版本添加为子模块。那可能吗?另一篇帖子的解决方案是:
git 子模块添加 git://github.com/example/some_lib.git lib/some_lib
我已经签出某个分支来工作,但没有发布。有没有一种方法可以一步完成此操作。否则我可以添加然后恢复到标签,对吧?
比方说:
\n\n top.git \n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sub.git => 75fc7\nRun Code Online (Sandbox Code Playgroud)\n\ntop.git指.75fc7sub.gitsub.git既没有分支也没有导致提交75fc7(无法访问)的标签。最终是否会因为没有任何东西可以到达而sub.git对该提交进行垃圾收集?75fc7
AFAIK,Git 子模块的设计方式在本例中sub.git无法证明它是任何其他存储库的子模块。换句话说,提交75fc7实际上是垃圾收集的候选者。如果子模块可能“忘记”所需的提交,那么恢复所有子模块的状态将是不可靠的。
我的计算机中有一个项目具有以下结构:
.
??? bin
??? code
? ??? src
??? data
??? doc
??? experiments
??? reports
??? summary
Run Code Online (Sandbox Code Playgroud)
code/src和/ reports/summary是.gitmodules中定义的子模块
[submodule "code/src"]
path = code/src
url = ./code/src/
[submodule "reports/summary"]
path = reports/summary
url = /home/zunbeltz/Proyectos/reports/base/
Run Code Online (Sandbox Code Playgroud)
我在我的工作场所的gitlab中创建了一个项目(版本7.9.4).添加新原点和git push -u origin master之后子模块的链接被破坏,错误代码为500.
我也试过gitlab.com,(版本7.14),我得到了404错误
有人知道这里发生了什么吗?
注意:我确实在gitlab论坛上发布了此消息,但有任何答案.
我正在使用 GIT 和 Bitbucket。在使用 Git 子模块时,我无法立即将不同子模块中所做的所有更改拉取到我的主分支“MASTER”。有没有一种方法可以跨多个子模块创建一个拉取请求。
git ×8
github ×2
bitbucket ×1
brunch ×1
gitignore ×1
gitlab ×1
javascript ×1
release ×1
repository ×1