1

私とすべての共同作業者が同じように動作するように設計された、プロジェクトの参加者用の Git 構成があります。たとえば、ブランチ名が一致し、ブランチが同じリモートを追跡するようにします。

最後に、プロジェクトを含む Git リポジトリから始めて実行します (1)

git checkout -b dev
git remote add development <dev-repo uri>
git push --set-upstream development dev

コラボレーションに使用するブランチとリモート リポジトリを作成および構成します。次に、協力者に(2)を指示するだけです

git clone -o development <dev-repo uri>

すべてが期待どおりに機能します。特に、ローカル リポジトリの「外観」はほとんど同じです (通信に役立ちます) — 1 つの違いを除いて: 2 番目の構成 (2) には、追加の on ブランチ the remote: がありdevelopment/HEADます。このブランチは何ですか? どこから来たのですか? なぜ(1)に出てこないのか。その存在(または不在)は何らかの影響を及ぼしますか?

4

2 に答える 2

2

あなたの質問の最初の部分はだまされています。

2 番目の部分についての私の推測は次のとおりです。レポジトリを複製すると、作業ディレクトリを含む完全なレポジトリがゼロから構築されます。remoteHEADがないと、git は最初にチェックアウトするブランチがわかりません。別の言い方をすれば、git はローカルHEADがどうあるべきかわからず、作業ディレクトリのファイルをどこで取得するかわかりません。

一方、リモートを既存のレポに追加すると、すでに完成しているものに追加することになります。Git は、リモートがデフォルトでチェックアウトするブランチを気にする必要はありません。すでにローカルを取得しているHEADため、リモートからのガイダンスは必要ありません。

于 2013-01-29T23:25:09.660 に答える
1

HEAD は実際にはブランチではなく、シンボリック ref です。リモートでは、実際のブランチを表します。それが何であるかを確認するか、git symbolic-ref refs/remotes/development/HEAD単にファイルを表示することができます.git/refs/remotes/development/HEAD

リポジトリをクローンすると、(デフォルトで) そのブランチはローカル リポジトリでチェックアウトされます。このリポジトリでは、マスター ブランチもチェックアウトされるため、リモートで HEAD ref が指す先になります。どういうわけかより優先度が高く、少なくともこれは1年前のケースでした。

なぜそれがあなたのリポジトリに存在し、他のリポジトリには存在しないのですか? わかりませんが、それは本当に問題ではありません。

于 2013-01-29T23:11:30.857 に答える