如何删除Git子模块?
顺便说一句,有什么理由我不能干脆做到
git submodule rm whatever
吗?
我试图将子模块放入回购.问题是当我克隆父repo时,子模块文件夹是完全空的.
有没有办法让它git clone parent_repo
实际上把数据放在子模块文件夹中?
例如,http://github.com/cwolves/sequelize/tree/master/lib/,nodejs-mysql-native
指向在外部git的子模块,但是当我结账的sequelize
项目,该文件夹为空.
如何取消子模块git子模块(将所有代码重新放入核心)?
就像"应该"我一样,如"最佳程序"......
使用git子模块和子树之间有什么概念上的区别?
每种情况的典型情况是什么?
我不清楚以下是什么意思(来自git submodule update docs):
...将使子模块HEAD分离,除非
--rebase
或--merge
指定...
怎么--rebase
/ --merge
改变事情?
我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).
我project_dir/vendor/submodule_one
每次运行时git status
都会在项目中添加一个子模块modified: vendor/submodule_one (new commits)
.
我的问题是解决这个问题的最佳方法是什么?我是否将vendor/submodule_one
-folder 添加到my中,.gitignore
因为我的主项目不应该知道我的子模块的细节?
或者当我更改并提交对子模块的更改时,我是否还需要在我的主项目中进行提交?
刚刚开始使用子模块,除了设置它们之外似乎找不到太多信息.
我喜欢git子模块.另外,我讨厌git子模块.我喜欢他们的是它如何使你能够干净地划分依赖关系等等.我明白让他们指出一个回购的特定提交,我这样做.但在我的情况下,我正在构建一个将在另一个项目中使用的库,所以我想把它保存在那个单独的repo中.
然而,当我每天在这个库上工作时,烦恼就来了,我不得不使用我的库切换回app来提交指针更新.
那么,当我不断更新并添加到这个库时,是否有可能让git子模块始终位于它所指向的repo的头部?
有没有办法,实际上没有检查父提交,根据父克隆中的提交ID确定子模块的SHA-1提交ID?我知道我可以通过'git submodule'找到当前关联的SHA-1.
这是一个例子:我有一个带有单个子模块'foo'的克隆,它在上个月已经改变了好几次.我在父克隆中有一个标签,这个标签是几个星期,叫做'release-1.2.3'.我想知道'foo'的关联SHA-1对于这个标记的提交是什么.我可以简单地检查'release-1.2.3'并使用git-submodule来查看,但我想知道是否有办法在不影响工作树的情况下执行此操作,因为我想编写脚本.
我想这样做是因为我想构建一个脚本来对父存储库中两个提交之间的子模块中的所有更改执行'diff' - 即"告诉我在这两个提交之间的子模块'foo'中更改了哪些文件'父母."
跑步有什么区别
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
VS
cd <submodule directoy>
git pull
Run Code Online (Sandbox Code Playgroud)
假设子模块先前已设置为跟踪某个分支:
git submodule add -b master [URL to Git repo]
Run Code Online (Sandbox Code Playgroud) 我有以下目录结构:
- G1 /
- git的
- 一个
- b
- C/
- git的
- d
- Ë
如您所见,我在存储库"g1"中有de存储库"c".当我使用以下命令时:
git clone g1 g2
我只获得以下目录结构:
- G1 /
- git的
- 一个
- b
- C/
目录"c"仍为空.有任何想法吗?