rba*_*dar 32 git git-submodules git-commit
我有一个git
回购,另一个作为submodule
依赖.在我的项目的根(其中.git
,.gitsubmodules
等等都是)我叫
git submodule update
Run Code Online (Sandbox Code Playgroud)
此操作失败,并显示以下消息:
在子模块路径'src/framework'中获取,但它不包含cc8c38e9d853491c672452d8dbced4666fc73ec8.直接获取该提交失败.
在哪里src/framework
是我的项目(PROJECT_ROOT/src/framework
)的子目录,应该是第三方回购的地方.给定的提交哈希值是有效的.
我也尝试过,git clone --recursive <my-repo>
但也失败了.
我的内容.gitsubmodules
是
[submodule "src/framework"]
path = src/framework
url = git@gitlab-blah-internal.de:gh/framework.git
Run Code Online (Sandbox Code Playgroud)
除此之外,我必须注意以下重要事实:由于最近的framework
repo 更新我的代码中断因此我真的需要检索它的特定版本,其中一切正常.
Von*_*onC 23
是的,我可以在我的网络浏览器中关注链接(使用GitLab)
你可以克隆那个回购,包括那个提交吗?
GitLab具有限制访问的权限级别,因此请确保使用正确的用户执行git clone命令,并使用ssh键执行user home directory/.ssh
.
如果您无法自己克隆子模块存储库(在本地硬盘驱动器上的任何位置),则可以解释错误消息.
问题来自于在我正在使用的存储库中作为子模块链接之前已经将头重置为提交的人.这使得引用无效.我不知道如何解决这个问题
您可以确保子模块遵循分支(例如,这里master
):
cd /path/to/parent/repo
git config -f .gitmodules submodule.bar1.branch master
Run Code Online (Sandbox Code Playgroud)
然后在最后一次提取的提交时更新子模块 master
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
该--remote
选项确保它不会使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态.
这样可以避免出现" did not contain cc8c38e9d853491c672452d8dbced4666fc73ec8
"错误消息.
Ali*_*tar 11
克隆(并收到错误)后运行此命令解决了我的问题:
git submodule update --force --recursive --init --remote
Run Code Online (Sandbox Code Playgroud)
当然,这不是一个好的解决方案。最好找到并解决潜在的问题,但是如果有人急着,这对我来说是有用的。
我的情况是子模块的 url 已更改,并且与父存储库不同步。我们注意到我们可以克隆父级,并且子级将毫无失败地初始化,但是存储库的这个特定实例失败了。
通过以下方式修复它:
.gitmodules
检查文件中的 url 是否正确git submodule sync
git -C path/to/submodule fetch
(如果子模块已经初始化)git submodule update --init [--recursive] path/to/submodule
(如果子模块已被 deinit)我不知道确切的问题是什么,但以下对我有用:(我认为第四步是关键)
归档时间: |
|
查看次数: |
17870 次 |
最近记录: |