Chr*_*ris 5 git git-push git-submodules
我有一个存储库,其子模块位于 /modules 目录中。
我现在想强制推送整个仓库内容,包括。/modules 的内容到另一个存储库(用于部署)。
但是,当我在子模块中进行更改时,目标存储库的内容似乎没有更新。这是我运行来推送内容的:
- git pull
- git submodule update --init --recursive
- git push -f --recurse-submodules=on-demand https://example.com/deployment.git master
Run Code Online (Sandbox Code Playgroud)
子模块只是 Git 存储库。
您可以用来在每个子模块中git submodule foreach运行任意命令。某些 Git 命令具有在每个子模块中运行特定(适当)命令的--recurse-submodules 选项。选项是这样的:它将进入已修改的子模块并在其他 Git 存储库中运行另一个命令。--recurse-submodules=on-demandgit pushgit push
子模块的git push似乎1具有以下形式:
git push <remote> <commit>:<branch>
Run Code Online (Sandbox Code Playgroud)
这要求子模块存储库签出一些分支名称。该名称显然必须与超级项目中的分支名称相匹配。然后它显示为:<branch>的一部分git push。
如果子模块推送由于任何原因没有发生,则超级项目推送失败并且不会发生(被中止)。
我们无法从您的问题中得知(因为您没有包含任何这些命令的任何输出)推送是否完成或失败,以及如果失败,为什么会失败。但请注意,即使子模块推送本身完成,这也与其他任何情况一样git push:无法保证推送的目标会对收到的任何新提交执行任何操作。这取决于目标 Git 存储库。
你说:
但是,当我在子模块中进行更改时,目标存储库的内容似乎没有更新。这是我运行来推送内容的:
这里至少有两个目标:子模块存储库的远程目标和超级项目的远程目标。哪些没有更新?如果有的话,您遇到了什么错误?哪些部署策略对子模块的目标和超级项目的目标有效(如果有)?
1我做了一些简单的测试,发现了一些错误情况,例如,当子模块签出不同的分支名称时。
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |