1
  1. Github にレポを作成しました (readme で初期化)。
  2. Egitでクローンしました。
  3. FETCH_HEAD と HEAD がチェックアウトされていることがわかりました。
  4. Github に行き、readme を変更しました。
  5. 変更を取得しました。
  6. HEAD がチェックアウトされていることを確認しましたが、FETCH_HEAD はチェックアウトされていませんでした。しかし、FETCH_HEAD には readme の更新がありました。origin/master の追跡ブランチにも更新がありました。
  7. origin/master の追跡ブランチをローカル マスターにマージしました。
  8. FETCH_HEAD と HEAD の両方が再度チェックアウトされていることがわかりました。

FETCH_HEAD

この投稿によると: Git の FETCH_HEAD はどういう意味ですか?

FETCH_HEAD は、リモート リポジトリからフェッチされたばかりのものを追跡するための短命の参照です。

フェッチした直後に FETCH_HEAD がチェックアウトされないのはなぜですか? オリジンのトラッキング ブランチをローカル マスターにマージした後にのみチェックアウトされるのはなぜですか?

4

1 に答える 1

0

FETCH_HEADフェッチした直後にチェックアウトされないのはなぜですか? オリジンのトラッキング ブランチをローカル マスターにマージした後にのみチェックアウトされるのはなぜですか?

FETCH_HEADそれ自体はブランチを参照しません。最後にフェッチされた SHA1 のみを記憶します。
ブランチを参照していないため、実際にはチェックアウトされていません (チェックアウトされるべきではありません)

ただし、追跡ブランチをブランチにマージすると (master更新HEADされたマスターを指す) 更新されます。そのブランチはチェックアウトされます。
マージが早送り」のものである場合、チェックアウトされたブランチは同じ SHA1 を参照し、「チェックアウトされた」という印象を与えHEADます(実際にはそうではありません)。FETCH-HEADFETCH_HEAD


つまり、次の図では次のようになります。

Egitでチェックアウト

FETCH_HEAD現在チェックアウトされているブランチと同じ SHA1 を参照しているという理由だけでHEADmaster、「チェックアウト済み」のチェックマークが付いています(こちら)

つまり、新しいコミットを行う場合:

  • 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

于 2013-08-07T11:52:34.737 に答える