gpt4 book ai didi

通过 http 克隆时 Git 远程分支丢失,但在远程计算机本地克隆时可用

转载 作者:太空狗 更新时间:2023-10-29 13:46:10 24 4
gpt4 key购买 nike

我被这个问题困扰了很长时间。我很确定这是从 svn 迁移时的一个错误。

在裸仓库所在的服务器上:

$ git clone /var/git/queryj.git
$ cd queryj
$ git branch -r

origin/HEAD -> origin/remotes/trunk
origin/br-0_6--ventura24-2_0-5
origin/master
origin/remotes/br-0_6--ventura24-1_0
origin/remotes/br-0_6--ventura24-1_9-stable
origin/remotes/br-0_6--ventura24-1_9-synchr
origin/remotes/br-0_6--ventura24-2_0
origin/remotes/br-0_6--ventura24-2_0-0

当通过 https 克隆存储库时,我得到不同的结果:

$ git clone https://git.acm-sl.org/queryj.git
$ cd queryj
$ git branch -r

origin/HEAD -> origin/remotes/trunk
origin/br-0_6--ventura24-2_0-5
origin/remotes/trunk
origin/ventura24-2_0-stable

知道如何在通过 https 克隆时使丢失的分支可用吗?它通过 webdav 导出。

最佳答案

git clone 不会为所有 remote tracking branches 创建本地分支默认情况下。

不要忘记 git for-each-ref 列出 Git 对象时。 --format 选项实际上可以是一个完整的脚本

例如,要创建本地分支(尚不存在的本地分支),上游分支到给定的远程(也使用“Is there a better way to find out if a local git branch exists?”):

#!/bin/bash

aremote=$1
fmt='r=%(refname); T=$(r#refs/remotes/$aremote/}
if [[ "$T" != HEAD ]]; then
git show-ref --verify --quiet refs/heads/$T
res=$?
if [[ "$res" != "0" ]] ; then git branch --set-upstream $T $aremote/$T ; fi
fi
'
e=`git for-each-ref --shell --format="$fmt" refs/remotes/$aremote`
eval "e"

您可以使用该脚本并将您的 Remote 名称作为参数。

关于通过 http 克隆时 Git 远程分支丢失,但在远程计算机本地克隆时可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505934/

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