4

私はこれで長い間立ち往生しています。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経由でエクスポートされます。

4

2 に答える 2

1

デフォルトgit cloneでは、すべてのリモート追跡ブランチに対してローカル ブランチを作成するわけではありません。

git for-each-refGit オブジェクトをリストするときは忘れないでください。この--formatオプションは、実際にはスクリプト全体にすることができます。

たとえば、特定のリモートへのアップストリーム ブランチを使用してローカル ブランチ (まだ存在しないローカルブランチ) を作成するには (「ローカル git ブランチが存在するかどうかを確認するためのより良い方法はありますか?」も使用します):

#!/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"

そのスクリプトを、リモートの名前をパラメータとして使用します。

于 2012-06-10T10:02:52.817 に答える
0

HTTP を介した (スマート サーバーを使用しない) クローン作成では、残りのリポジトリから生成される追加のメタデータが使用されます。このメタデータは手動で更新する必要があります。これは、 を実行して実行できますgit update-server-info

于 2012-06-10T12:15:23.693 に答える