FETCH_HEAD
フェッチした直後にチェックアウトされないのはなぜですか? オリジンのトラッキング ブランチをローカル マスターにマージした後にのみチェックアウトされるのはなぜですか?
FETCH_HEAD
それ自体はブランチを参照しません。最後にフェッチされた SHA1 のみを記憶します。
ブランチを参照していないため、実際にはチェックアウトされていません (チェックアウトされるべきではありません)。
ただし、追跡ブランチをブランチにマージすると (master
更新HEAD
されたマスターを指す) 更新されます。そのブランチはチェックアウトされます。
マージが「早送り」のものである場合、チェックアウトされたブランチは同じ SHA1 を参照し、「チェックアウトされた」という印象を与えHEAD
ます(実際にはそうではありません)。FETCH-HEAD
FETCH_HEAD
つまり、次の図では次のようになります。

FETCH_HEAD
現在チェックアウトされているブランチと同じ SHA1 を参照しているという理由だけでHEAD
master
、「チェックアウト済み」のチェックマークが付いています(こちら)。
つまり、新しいコミットを行う場合:
FETCH_HEAD
チェックアウトされたティックはもうありません (最後にフェッチされた SHA1 を引き続き参照します)。それが、「実際には」チェックアウトされていないと私が言う理由です (「特定の SHA1 への固定参照であるため、新しいコミット後にチェックアウトされたままにはならないという意味で)」
HEAD
ブランチは新しい SHA1 を参照しmaster
、チェックアウトされたティックを保持します。
FETCH_HEAD
ただし、 SHA1を直接チェックアウトする場合(マージする前にmaster
: Egit ユーザー ガイドには、参照がまだチェックアウトされていない場合に実行できると記載されています)、次のようになります。
FETCH_HEAD
まだ「チェックアウト」されている
- 同じ
HEAD
- しかし
master
(または他のブランチ)はもうチェックアウトされません:これはDETACHED HEAD 状況です
チェックアウトした の上に新しいコミットを作成する場合FETCH_HEAD
:
FETCH_HEAD
チェックアウトされなくなります (最後にフェッチされた SHA1 で修正されたままになるため)
- HEAD は、チェックアウトされた新しいコミットを指します。
- 「チェックアウト」されたブランチはありません: デタッチされた HEAD。
の上で行われたチェックアウトされたコミットを開き、FETCH_HEAD
そこからブランチを作成する必要があります。

(記事「Git レッスン: 分離した頭に注意する」より)
結論は:
参照に「checked-out tick」が表示されるたびに、現在チェックアウトされている参照(コミットまたはブランチ)と同じ SHA1 を参照してFETCH_HEAD
いるためです。
それ自体がチェックアウトされているからではありません。その上で新しいコミットを行うと、チェックアウトされなくなります。
FETCH_HEAD