0

オリジン、内部、外部の3つのリモートリポジトリをセットアップしています。これらの新しいローカル インストールを作成するときは、origin のクローンを作成し、内部および外部をリモートとして追加します。

git fetch --allを実行すると、オリジンの新しいリモート ブランチが表示されます が、内部および外部ではサーバーからフェッチされていないように見えます (ただし、サーバーに接続してクエリを実行していることがわかります)。

git remote update internalも試してみましたが、うまくいきませんでした。

git ls-remote internalを使用すると、新しく作成されたリモート ブランチを確認できますが、クローンを作成できません (おそらく、ブランチに関する情報がローカル リポジトリにフェッチされていないためです)。

インターネットを検索すると、このブログ投稿http://www.jukie.net/bart/blog/fetch-all-git-branchesが見つかりました。これは、同じ問題を説明し、カスタム スクリプトで解決します。

最近の git リリースを使用して新しい git リポジトリのクローンを作成すると、デフォルトで git はすべてのリモート ブランチを含む .git/remotes/origin を作成します。このファイルには、フェッチで更新されるすべてのリモート ブランチが一覧表示されます。

時間が経つにつれて、リモートがより多くのブランチを取得する可能性があり、リモート ブランチ リストの更新が必要になる場合があります。リモートで利用できるものを見つける方法は、git-ls-remote origin を呼び出してから、対象のブランチを選択し、それらを .git/remotes/origin ファイルに追加することです。

git fetch --allが .git/remotes/[remote_name] ファイルを新しいブランチで更新しないのはなぜですか? これを通常の git コマンドで更新する方法は本当にありませんか?

4

2 に答える 2

1
git fetch internal --all
git fetch external --all
于 2012-08-07T07:06:38.773 に答える
-1

この別の投稿 [1] を見つけました: In git, how do I check out a remote repository's remote branchs? これにより、セットアップのgit構成を確認するようになりました。何らかの理由で、リモートのデフォルトのグロブ refspec (refs/remotes/remote_name/ 名前空間の下) ではなく、マスター ブランチのみを追跡するようにリモートを取得することができました。

だから私の設定はこのように見えました

[remote "internal"]
    url = path_to_my_remote_repo
    fetch = +refs/heads/master:refs/remotes/internal/master

そしてこれに変更

[remote "internal"]
    url = path_to_my_remote_repo
    fetch = +refs/heads/*:refs/remotes/internal/*

私のために問題を解決しました。

于 2012-08-08T05:01:49.893 に答える