2011-10-11 14 views
5

だから私は、gitリポジトリを作成し、私の作業コピーにいくつかのタグやリモコンを設定し、その後もプッシュします--mirrorのgitで押し、gitリポジトリをクローンしてリモコンを保持するにはどうしたらいいですか?

git push --mirror my.remote.repository 

たぶんと私のサーバーにリポジトリをプッシュしました私がセットアップしたリモコン。

しかし、私は

git clone my.remote.repository 

をすれば、私は私が最初に作成リモコンが表示されません。リモコンを複製するために特別な構文が必要ですか?ミラーは実際にリモコンを送信しませんか?どこで私は間違えましたか?

編集:多分、私のワークフローは変わっています。これは私が達成しようとしているものです。 Repoは最初は私が制御しない別のプロジェクト(A)のクローンで、リモートを「上流」に名前を変更しました。私は新しい「マスター」ブランチを作り、作業コピーを変更して展開するつもりです。私は元のリポジトリ(A)からの更新を元に戻す(元の未修正のブランチに切り替えて、上流から引っ張る)場合があります。しかし、私は他の人と一緒に仕事をしており、そのすべてがこれを行うことができるはずです。目標は、最初のリポジトリ(A)からバグ修正を加えてマスターブランチを更新し、その変更を「マスター」ブランチにコミットすることです。このため、開発者がリポジトリをクローンするときに、上流のブランチを継承して実際に行うことができるようにする必要があります。要するに、私は '上流'ブランチを使って別のプロジェクトからの更新を取り込もうとしています。私はサブモジュールを使っていません。なぜなら、上流のブランチは実際にはリポジトリのファイルの95%を占めており、上流のファイルがなければプロジェクト全体は意味をなさないからです。

+0

おそらく私は何かが不足しているかもしれませんが、 'upstream/master'から更新しているローカルブランチ(' foo'と呼ばれます)を持っているかのように聞こえます。なぜあなたは、他の人が複製することができる裸のリポジトリにそのブランチ(あなたの 'master 'だけでなく)をプッシュしないのですか?あるいは、リポジトリをリポジトリに直接クローンさせることができますか?どちらの場合でも、どの段階でも '--mirror'を使わずに、リモートブランチとしてブランチを取得します。 –

+0

@ mark-longair Rightしかし、それらのリモートブランチは、もともとの上流のサーバーではなく、私たち自身のサーバーを追跡しています。やや便利ですが、それは他の人がアップストリームから更新を取り込み(読み込み専用)できず、自分のサーバー(起点)にコミットできないことを意味します。 – Zxaos

+0

これは可能です。他のリポジトリを参照する余分なリモートを追加するだけです。 –

答えて

2

(これは典型的なワークフローではありませんが、私はとにかく直接質問に答えるためにしようとするでしょう...)

git push --mirrorは確かにリモコンの同じ名前のリモート追跡ブランチをプッシュしているだろう。しかし、クローンすると、デフォルトではrefs/headsの下にある参照のみが取得され、リモート追跡のブランチにはrefs/remotes/origin/の下にマッピングされます。 git clone --mirrorとクローンしてリモートからのリモート追跡ブランチを取得することもできますが、そのオプションは--bareを意味します。

ブランチがリモートからミラーリングされている作業ツリーを持つリポジトリが必要な場合は、設定オプションremote.origin.fetchでrefspecを変更して、すべてのリファレンスを同じ名前にフェッチすることができます非常に珍しいワークフローを使用しているということです。

ところで、あなたがフェッチされ、参考文献のマッピングを変更するには、これらの技術のいずれかを使用している場合でも、これはリポジトリのGitの設定で定義されているリモコン自分を、クローンではないだろう - git cloneは、クローンしません個人情報を含むと考えられる.git/configからのもの。

+0

この質問をより理にかなったものにするため、ワークフローに関する情報を追加しました。 – Zxaos

+0

これはこれを行う方法のように見えます。私は、このワークフローを廃止し、サブモジュールを代わりに使用することになったことに気づくべきです。 – Zxaos

関連する問題