gpt4 book ai didi

来自不同目录的git子模块更新

转载 作者:行者123 更新时间:2023-12-04 02:06:46 26 4
gpt4 key购买 nike

我想从我的 git 项目之外运行一个子模块更新。对于大多数命令(例如 git status),我可以给 git --git-dir--work-tree 参数,如下所示:

git --git-dir=/path/to/root/.git --work-tree=/path/to/root status

但是,运行 git --git-dir=/path/to/root/.git --work-tree=/path/to/root submodule update 给出结果:致命:$program_name 不能在没有工作树的情况下使用。

我知道我可以切换到 /path/to/root 目录,但是我想知道 git 是否能够从 git 项目外部更新子模块。

最佳答案

通过执行 git --git-dir=<path-to-repo>\.git\modules\<submodule-name>,我能够从主存储库外部的子模块中运行 git 命令

这是因为子模块 git 目录位于 .git\modules\<submodule-name>文件夹,而不是子模块本身(除非您首先在现有存储库之上创建子模块,在这种情况下,您可以运行 git submodule absorbgitdirs 来修复此问题)。请注意,从一个新的克隆中,.git\modules\<submodule-name>在您运行 git submodule update 之前文件夹将不存在第一次。

但是,我在尝试运行 git submodule update 时遇到了与您相同的问题使用 --git-dir的主要存储库。无论是否指定工作树,它都不起作用。我想知道这是一个错误,还是我们做错了什么。

但是,因为我链接的第一个命令有效,您可以执行以下操作:

git --git-dir=<path-to-repo>\.git\modules\<submodule-name> pull

这将从主存储库外部运行 git pull 到您的子模块中。

关于来自不同目录的git子模块更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42676069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com