如何从本地存储库中获取分离的Git HEAD?

时间:2015-02-16 15:57:40

标签: git git-fetch

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)。

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题。

分离的HEAD的

git pull似乎不允许设计,但可以使用git push分离的HEAD(即,不是从发送方推送的接收方提取):

$ git push <repository> +<sha1>:refs/remotes/origin/master

然后从接收它的存储库:

$ git checkout <sha1>  # same as origin/master

注意:如果它是当前分支或非基础存储库,则默认情况下不允许推送到refs/remotes/origin/master而不是直接推送到master,因此我们将推送到原始引用。