2013-03-08 10 views
69

checkoutは何ですか?git checkoutsはどういう意味ですか?

特定のブランチに対してcheckoutを実行すると、HEADはそのブランチを指しています。しかし、それはどういう意味ですか?私はその支店で働くことができますか?はいの場合は、ブランチをチェックアウトせずに、私はそれに取り組むことができません?

さらに、remote checkoutは何を意味しますか?どのように役立つのですか?

+1

なし。はい、私は持っていると私はそれが意味するものの理論を見つける。 HEADなどを指していますが、「チェックアウトコード - 変更を加える - チェックイン」という点から知りたいのですが、それは違うのですか? – daehaai

+0

投票...いくつかのコメントを入れてください!!あなたは答えをゴーグルしていないと言いません。私は詳細情報を探しています。 – daehaai

+18

@antonijn - 私は質問をグーグルで試してみました - これは最初の結果です - 一度私がここに来ると私は問題が閉じられているのを見て、この狂気の姿勢を誰もが見た - 私はTFSの背景から来て、私は "Checkout"がGITとはまったく異なる何かを意味すると考え始めています。私はそれが* git-landで何を意味するのか知りたい。 – BrainSlugs83

答えて

36

あなたが指摘したように、HEADは、あなたがコミットツリー内にあることを示すラベルです。あるコミットから別のコミットに移動すると、それはあなたと一緒に動きます。 git checkout <commit>は、コミットツリー内を移動し、フォーカス(HEAD)を指定されたコミットに移動するための基本的なメカニズムです。

コミットは、コミットハッシュ、ブランチ名、タグ名、相対構文(HEAD^HEAD~1など)などの任意の方法で指定できます。チェックアウトをブランチの変更とみなすことはしばしば役に立ちます。その観点からいくつかのオプションがありますが、それらはすべてコミットを参照します。

チェックアウトするには、HEADを動かす以外に、コミットにいくつかの影響があります。

  • 作業ディレクトリは、チェックアウトされたコミットの状態に更新されます。
  • ブランチ名が指定されている場合、checkoutはそのブランチをアクティブにします。アクティブブランチは、追加された新しいコミットと共に移動します。
    • -bオプションを使用すると、現在のコミットに基づいて新しいブランチが作成され、アクティブになります。チェックアウト分岐が新しいブランチは(-bと同じように)作成されますが、コミット、既存のいずれかに基づいてされることはありません--orphanオプションでリモートブランチ
    • の知ることができ--trackオプション付き

1からの移動の周りを公転するすべてはあなたがgit checkout man-page約読むことができますいくつかのより多くのオプションは、別のコミットがある - ちょうど移動のほかにどのような影響を与えるでいる移動することを変えHEAD

+0

だから、 "チェックアウト"はまったく別のものを意味するように思えます(とにかくTFSと同じで、TFSの同等のものは特定の "チェンジセット"を取得します)。私はこれを見てうれしい! - 「最新」のマジック定数はありますか? (TFSでは「T」です)、「HEAD」ラベルを知らなくても最新バージョンのコードをダウンロードすることができます。 – BrainSlugs83

+1

ブランチ上にいる場合、ブランチ名はそのブランチの最新のコミットです。ブランチにいない場合は、最新のコミットです。私は、ブランチに関係なくリポジトリ内の最新のコミットを見つけて手動で移動するためにlogコマンドを使用しますが、必要に応じて自動化できると確信しています。 –

+0

最後の段落について: 'git checkout 'はブランチを切り替えないことに注意してください。 – galath

13

「チェックアウトする」とは、リポジトリから任意のコミットを取り出し、関連するファイルおよびディレクトリツリーの状態を作業ディレクトリに再作成することを意味します。

あなたはそれがないブランチヘッド(例えばgit checkout HEAD~2)でコミットをチェックアウトすると、あなたはいわゆるデタッチ頭の上にあります。ここではコミットを作成できますが、別のブランチに切り替えると、ブランチ名でそれらのコミットをリカバリできず、しばらくしてガベージコレクタによって削除されることさえあります。

7

ファイル、フォルダ、ブランチのチェックアウトのいくつかの使用例を理解しやすくするために説明しましょう。

私たちはdevindex.htmlという名前のフォルダも持っているとしましょう。すべてが追跡され、作業ディレクトリはきれいです。

私が誤ってファイル名index.htmlを変更し、私が単にgit checkout index.htmlを使用することを元に戻したい場合、そのファイル状態を現在選択されているリポジトリから回復します。

ここでdevフォルダに何らかの変更を加えて回復したい場合は、私はgit checkout devを使うことができますが、そのフォルダをチェックアウトする代わりにdevという名前のブランチがすでに存在する場合は、そのブランチをプルダウンします。それを避けるために、私はむしろgit checkout -- devをやります。

ここでは、現在のブランチを表し、現在選択されているブランチのフォルダdevをgitに問い合わせています。

同様に、git checkout alpha devを実行すると、アルファブランチからdevフォルダがプルダウンされます。

この回答はあなたの最初の質問 'git checkout really mean'です。

関連する問題