いくつかの用語を乱用すると、各 git リポジトリ自体は clearcase のプライベート ビューによく似ています。他の人のビューを直接見ることはできません。(ただし、後で説明するショートカットがあります。)
幸いなことに、2 人は 3 番目の共有レポを持っているため、彼を間接的に見ることができます。彼は共有レポにプッシュし、次にあなたfetch
(それpull
は答えを複雑にするため、まだ行っていません) を共有レポからプッシュします。fetch
これで、 (デフォルトではとにかく) すべてを取得するため、彼が何をしたかがわかります。
ただし、git が clearcase と大きく異なる点は次のとおりです。git に、それを目に見える場所に抽出するように依頼することで、「彼が何をしたかを見る」ことができます。「ただ現れる」のではなく、「見せてください」と言わなければなりません。
次の 1 つまたは複数の操作を行うことで確認できます。
- git (または GUI) に差分を表示するように依頼する
- 現在の作業ツリーに別のブランチをチェックアウトするように git に依頼する (ここでは明らかに衝突の可能性があります)
- 特定のブランチから 1 つまたは複数の特定のファイルの内容を現在の作業ツリーにチェックアウトするように git に依頼する
- 別のブランチを別の(おそらく新しい) 作業ツリーにチェックアウトするように git に依頼する
これらはすべて、特定のリビジョンを指定する方法をある程度理解する必要があります (「ブランチ名」またはコミット ID などによって)。次の 2 つの重要な点に注意してください。
- clone して fetch すると、git は
remotes/origin/master
やのような名前のブランチを作成しますremotes/origin/bug_b
。
- リポジトリでローカルに作業する場合、git は
master
や などの名前のブランチを作成しますbug_a
。
したがって、 にfetch
編集された変更を表示するにはremotes/origin/bug_b
、次を使用します。
git log remotes/origin/bug_b
という名前の独自のブランチを持つ必要はなくbug_b
、マージやプルなどを行う必要はありません。見たいだけの場合は、リモートブランチに名前を付けるだけです。ブランチで独自の作業を行う場合にのみ、独自のブランチ名が必要ですbug_b
。
まだ理解する必要のない深いところがありますが、ときどき戻ってくる必要があります: のようなブランチ名remotes/origin/bug_b
は、実際には のような大きな git SHA1 値の 1 つに名前を付けるための象徴的な方法ですae0af6d748b98716f0f72e428728345b828c4067
。git が行うことfetch
は、新しいファイルやツリーなどをすべて取得し、それらの大きな毛むくじゃらの ID を持つすべてのコミットを取得し、それらすべてをリポジトリに詰め込むことです。次に更新しますremotes/x/y
各「リモートブランチ」の「ヒント」を指すラベル。あなたのレポには、誰もがこれまでに行ったことがあるすべてがあり、必要に応じてすぐに利用できます。(場合によっては「多すぎる」ことが判明するため、実際に持っている量を制限する方法がありますが、「すべて」がデフォルトであり、それについて考える方法です)。すべての VOB の完全なコピー. さいわい、git は clearcase よりもスペースと時間の効率が優れています。)
a を実行するとき、git pull
実際には 2 つのことを行っています: a git fetch
—これが変更をプルするものです—そして (通常) agit merge
です。マージは、「他の誰かが行った作業」と「あなたが行った作業」を組み合わせたものです。bug_b
自分のbug_a
ブランチで作業しているときにボブが行った変更をフェッチするときは、それは望ましくありません。
(オプションで、 git に make git pull
meanのgit fetch
後に を指定することもできgit rebase
ます。しかし、それも必要ありません。そのままにしておいてくださいgit fetch
。)
ここで、そのショートカットについて説明しますgit clone
。元の共有リポジトリを使用している場合は、Bob が変更を共有リポジトリに戻すのを待ってからgit push
、bug_b
変更を確認する必要があります。ただし、Bob が (ssh などを介して) 彼のプライベート リポジトリへの読み取りアクセスを許可した場合は、Bob のリポジトリを代替の「リモート」として追加できます。たとえば、remotes/origin/bug_b
このリモートに名前を付ける代わりに、 を参照してください。で取得できます。ただし、ボブと調整できる場合を除き、これらすべてを気にしないでください。通常は、2 人とも 1 つの共有リポジトリに移動します。remotes/bob/
remotes/bob/bug_b
git remote update bob
push