相关疑难解决方法(0)

git子模块更新

我不清楚以下是什么意思(来自git submodule update docs):

...将使子模块HEAD分离,除非--rebase--merge指定...

怎么--rebase/ --merge改变事情?

我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).

  • 从这些子模块中,我可以创建分支/修改并使用推/拉,就像我在常规回购中一样,或者有什么需要谨慎的吗?
  • 我如何将子模块引用的提交从say(tagged)1.0提升到1.1(即使原始repo的头部已经是2.0),或者选择使用哪个分支的提交?

git git-submodules

233
推荐指数
4
解决办法
23万
查看次数

如何管理与git子模块的冲突?

我有一个引用多个子模块的git超级项目,我试图锁定其他项目成员的工作流程.

对于这个问题,让我说我的超级项目被调用supery并且子模块被调用subby.(然后是我正在尝试做的简化......我实际上并没有使用分支版本,但我认为最简单的问题是布局.)

我的主分支supery具有作为子模块引用v1.0的git项目的subby标记.的分支superyone.one,改变了子模块的引用指向该标记v1.1subby.

我可以毫不费力地在每个分支中工作,但如果我尝试使用one.one分支更改来更新分支,master我会收到一些冲突,而我不知道如何解决它们.

基本上在分支中运行一段git pull . master时间之后subby,看起来它会创建其他子模块.

在拉/合并之前,我git submoduleone.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)

git branch conflict git-submodules

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

git - 如何获得默认分支?

我的团队交替使用dev和master作为几个repos的默认分支,我想编写一个脚本,在输入目录时检查默认分支.

当在某些repos中打开pull请求时,它们默认为'dev'或'master'作为合并目标.

我了解如何设置此信息但不检索它:https: //help.github.com/articles/setting-the-default-branch/

是否有可用于确定远程存储库的默认分支的git命令?

git

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

如何使外部存储库和嵌入式存储库作为通用/独立存储库工作?

我有一个大项目(让我们说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)

git version-control github

18
推荐指数
5
解决办法
3万
查看次数

如何拉新的子模块

试图在这个网站和其他人寻找答案: 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 master
  • git submodule update 什么也没做.

我每次都手动仔细检查库目录,以确定是否出现了额外的子模块.

我想避免执行某些操作,除非它们对我当前包含代码更改的存储库状态没有破坏性,并解决了我的问题,以防它是我提到的但没有运行的命令,或者其他人有另一个尝试. …

git git-submodules

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

添加本地存储库作为远程存储库的子目录

假设我有一个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并联同clientserver,即

./client
./server
./test
Run Code Online (Sandbox Code Playgroud)

我希望本地的所有签到历史记录都可以保存在远程存储库中.有没有办法实现这个目标?谢谢!

git

9
推荐指数
1
解决办法
4525
查看次数

为什么不使用 GIT_SUBMODULE_STRATEGY:recursive 更新子模块

我在 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 项目中所做的任何更改

gitlab-ci

5
推荐指数
1
解决办法
3662
查看次数

我可以让 git 在签出分支时自动更新子模块吗?

我正在开发一个包含一些子模块的 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 以便分支签出本身默认也会更新子模块吗?

git git-checkout git-submodules

5
推荐指数
2
解决办法
1081
查看次数

如何更新一个子模块git?

我有几个子模块,我只想更新其中一个。

我认为这个命令会更新所有 .gitmodules

git submodule update --init --recursive --remote
Run Code Online (Sandbox Code Playgroud)

我只希望更新其中一个模块。

git github

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