【发布时间】:2015-04-17 04:45:12
【问题描述】:
在 pre-commit 钩子(实际上是 Gerrit 中的 ref-update)期间,存储库处于分离的 HEAD 模式(女巫很好)。
执行git clone path/to/my/repo 确实克隆/获取此提交,但我只想执行git fetch 并避免在每次提交时克隆我的存储库(出于各种原因,例如避免每次更改文件时间戳时间)。
在先前克隆的存储库(如上)上执行git fetch --all 不会不获取此分离的头部提交。请注意,我确实拥有提交的 SHA1,但 git checkout commit-sha1-here 也不起作用,因为它尚未被获取。
我知道设计上只获取远程分支,但是由于 clone 可以获取分离的头,难道没有办法更新我的克隆存储库以便稍后检索它们吗?我想避免每次都为此创建临时分支。
最终目标是更新裸存储库的工作树(分离的 HEAD)。
【问题讨论】:
-
如果你运行
git ls-remote,你会发现 fetch-er 可以看到 fetch-ee 的HEAD(所以理论上这绝对是可能的)。在实践中,简单地将HEAD:<something>列为 refspec 应该可以工作,但我还没有对此进行测试。您可以将其作为命令行 refspec 传递,也可以更新给定遥控器的fetch设置。 -
@torek 但是我所有的获取尝试都失败了。