我不清楚以下是什么意思(来自git submodule update docs):
...将使子模块HEAD分离,除非
--rebase或--merge指定...
怎么--rebase/ --merge改变事情?
我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).
我有一个引用多个子模块的git超级项目,我试图锁定其他项目成员的工作流程.
对于这个问题,让我说我的超级项目被调用supery并且子模块被调用subby.(然后是我正在尝试做的简化......我实际上并没有使用分支版本,但我认为最简单的问题是布局.)
我的主分支supery具有作为子模块引用v1.0的git项目的subby标记.的分支supery叫one.one,改变了子模块的引用指向该标记v1.1的subby.
我可以毫不费力地在每个分支中工作,但如果我尝试使用one.one分支更改来更新分支,master我会收到一些冲突,而我不知道如何解决它们.
基本上在分支中运行一段git pull . master时间之后subby,看起来它会创建其他子模块.
在拉/合并之前,我git submodule从one.one分支获得了所需的响应:
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
Run Code Online (Sandbox Code Playgroud)
但是在拉动之后,它会在我运行时添加额外的子模块git submodule:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e …Run Code Online (Sandbox Code Playgroud) 我的团队交替使用dev和master作为几个repos的默认分支,我想编写一个脚本,在输入目录时检查默认分支.
当在某些repos中打开pull请求时,它们默认为'dev'或'master'作为合并目标.
我了解如何设置此信息但不检索它:https: //help.github.com/articles/setting-the-default-branch/
是否有可用于确定远程存储库的默认分支的git命令?
我有一个大项目(让我们说A repo),它有一个来自的子文件夹B repo.当我承诺时,我会像下面那样遇到警告A repo
warning: adding embedded git repository: extractor/annotator-server
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> extractor/annotator-server
hint:
hint: If you added this path by mistake, you can remove it from the …Run Code Online (Sandbox Code Playgroud) 试图在这个网站和其他人寻找答案: StackOverflow - 简单的方法拉最新的所有子模块
他们似乎都想谈谈你是否正在控制它们,而不是如果其他人添加了一个,我只想将额外的一个添加到我的项目中,而不需要保存或备份我的更改,如果我需要删除该文件夹.
我应该删除我已经删除的.gitmodules文件和/或子模块目录git clone --recursive吗?(StackOverflow - 如何git clone包含子模块?)
这些命令似乎也没有帮助:
git submodule update --init --recursive 好像什么也没做.git submodule update --recursive 没有.git fetch --recurse-submodules输出Fetching submodule ...几次.git pull --recurse-submodules输出相同的东西,然后Already up-to-date.在获取试用后说.奇怪,因为在任何一种情况下我的子模块都已下载.git clone --recursive ... 尚未尝试过. 我觉得会覆盖我在Stash或其他方面做出的任何改变.git submodule update --recursive --remote 检查出其中一个子模块的新提交SHA.git submodule update --recursive检查出其中一个子模块的新提交SHA.可能是较旧的原始提交级别.git submodule status 为每个提供适当的SHA,版本和名称信息,同时仍然缺少我想要的那个.git submodule foreach git pull origin mastergit submodule update 什么也没做.我每次都手动仔细检查库目录,以确定是否出现了额外的子模块.
我想避免执行某些操作,除非它们对我当前包含代码更改的存储库状态没有破坏性,并解决了我的问题,以防它是我提到的但没有运行的命令,或者其他人有另一个尝试. …
假设我有一个git@server:project.git具有以下结构的远程存储库():
./client
./server
Run Code Online (Sandbox Code Playgroud)
然后,我创建了目录中的本地仓库~/myproject/test使用git init; git add . ; git commit -m "init check in ".我想这个本地资源库推送到远程的存储库作为子目录test并联同client和server,即
./client
./server
./test
Run Code Online (Sandbox Code Playgroud)
我希望本地的所有签到历史记录都可以保存在远程存储库中.有没有办法实现这个目标?谢谢!
我在 MASTER 项目的根目录中创建了一个 .gitmodules 文件:
[submodule "SLAVE"]
path = SLAVE
url = ../../my-group/SLAVE.git
Run Code Online (Sandbox Code Playgroud)
添加到 MASTER 的 .gitlab-ci.yml 中:
variables:
GIT_SUBMODULE_STRATEGY: recursive
Run Code Online (Sandbox Code Playgroud)
触发了MASTER的CI管道。
因此,在运行 MASTER 的 CI 时,不会应用 SLAVE 项目中所做的任何更改
我正在开发一个包含一些子模块的 git 存储库,这些子模块在不同的分支上有不同的修订版。当我切换分支时,我得到:
M path/to/subrepo
Switched to branch 'another-branch'
Run Code Online (Sandbox Code Playgroud)
信息。然后我手动执行:
git submodule update --recursive
Run Code Online (Sandbox Code Playgroud)
然后这种情况就消失了。
我尝试在 .git/hooks/post-checkout 中编写一个 git hook:
#!/bin/bash
exec git submodules update --recursive
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何作用。我尝试从 post-hook 行添加 exec echo hello - 似乎也不起作用。
我的问题:我可以配置 git 以便分支签出本身默认也会更新子模块吗?
我有几个子模块,我只想更新其中一个。
我认为这个命令会更新所有 .gitmodules
git submodule update --init --recursive --remote
Run Code Online (Sandbox Code Playgroud)
我只希望更新其中一个模块。