117

checkoutgit の sとは何ですか?

checkout特定のブランチに対して行うと、そのブランチを指すことがわかりますHEAD。しかし、それは本当にどういう意味ですか?そのブランチで作業できるということですか?はいの場合、ブランチをチェックアウトしないと作業できませんか?

また、どういうremote checkout意味ですか?どのように便利ですか?

4

3 に答える 3

76

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

HEAD^コミットは、コミットハッシュ、ブランチ名、タグ名、相対構文( 、HEAD~1など)など、さまざまな方法で指定できます。チェックアウトがブランチを変更していると考えると便利なことがよくあり、その観点から機能するオプションがいくつかありますが、それらはすべてコミットを参照します。

コミットをチェックアウトするには、移動以外の副作用がありHEADます。

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

git checkoutのmanページで読むことができるオプションがさらにいくつかあります。これらはすべて、あるコミットから別のコミットへの移動を中心に展開します。移動に加えて、その移動がどのような効果をもたらすかを変えるだけHEADです。

于 2013-03-08T15:39:34.660 に答える
28

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

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

于 2013-03-08T14:55:00.533 に答える