kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu Git その12 - ユーザーが作業するブランチを指すHEADについて・コミットオブジェクトを指す分離したHEADについて

ユーザーが作業するブランチを指すHEAD

  複数の「ブランチ」が存在する場合、ユーザーはいずれかの「ブランチ」で作業を行います。
  同時に複数の「ブランチ」で作業することはありません。
  別の「ブランチ」で作業を行いたければ、別の「ブランチ」に切り替える必要があります。

  この時、ユーザーがどの「ブランチ」で作業しているのかを、「HEAD」ポインターで管理します。


  「HEAD」は、現在作業を行っている「ブランチ」の「ブランチヘッド」を指します。
  「ブランチヘッド」は「ブランチ」ごとに存在するため、「ブランチヘッド」からどの「ブランチ」なのかを把握することができます。

  現在のブランチ

    「HEAD」が指す「ブランチ」を、「現在のブランチ(current branch)」と表現します。

  作業するブランチの変更

    ユーザーは作業する「ブランチ」を、別の「ブランチ」に切り替えることができます。
    「ブランチ」を切り替えれば、その「ブランチ」が操作対象になります。

    この時、「HEAD」が指す「ブランチヘッド」は、切り替えた「ブランチ」の「ブランチヘッド」を指します。


  間接的にコミットオブジェクトも指す

    「HEAD」は「ブランチヘッド」を指しますが、「ブランチヘッド」が「コミットオブジェクト」を指すため、「HEAD」から「ブランチヘッド」を経由して「コミットオブジェクト」にアクセスすることができます。

    「HEAD」は、作業対象の「ブランチ」を指すと同時に、操作対象の「コミットオブジェクト」も指しています。

    「HEAD」は、「コミットオブジェクト」へのポインターへのポインター、と言ったところでしょうか。

  HEADは多用される

    「Git」で何か操作を行う際、操作対象に「コミットオブジェクト」を指定する機会が数多くあります。

    多くのケースではデフォルトの操作対象として、「HEAD」が(間接的に)指す「コミットオブジェクト」を対象にします。

コミットオブジェクトを指す分離されたHEADについて

  「HEAD」は、通常上記のように「ブランチヘッド」を指します。
  しかしユーザーの操作内容によっては、特定の「コミットオブジェクト」を指すこともあります。


  この時「HEAD」は、どの「ブランチヘッド」も指していません。
  従って、「現在のブランチ」は存在しないことになります。

  このように、直接「コミットオブジェクト」を指す「HEAD」のことを、「分離されたHEAD(detached HEAD)」と表現します。
  どの「ブランチ」からも切り離されているため、「分離」となります。

  過去のスナップショットの参照

    「分離されたHEAD」の例です。

    過去の「スナップショット」からプロジェクトのファイル群を取得した時は、「HEAD」はその「コミットオブジェクト」を指すようになります。

 
    「HEAD」が指す「コミットオブジェクト」から、「ブランチ」を作成することができます。


    作成したブランチで「コミット」を行えば、以下のように履歴が枝分かれします。

    

Git
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 22.04 その120 - UbuntuのブートローダーをBoot Repairで修復するには・Ubuntuが起動しないトラブルを解決
    UbuntuのブートローダーをBoot Repairで修復するには 「Boot Repair」はOSのブートローダーに起因するOSが起動しない問題を簡単に解決してくれるアプリです。
  • Ubuntu 22.04 LTSのインストール その5 - UEFI環境でパーティションの作成と構成 〜 ブートローダーのインストール先の選択
    UEFI環境でパーティションの作成と構成を行う UEFI環境でパーティションの作成と構成を行います。
  • Ubuntu 22.04 その79 - 画面ロックの有効・無効を設定するには・画面ロック時の設定をカスタマイズするには
    画面ロックの有効・無効を設定するには 一定時間ユーザーによる操作がない時に、自動的に画面をロックしパスワードで保護したり、画面をブランク状態にできます。
  • Ubuntu 22.04 その95 - ディスプレイサーバーを切り替えるには・XorgとWayland
    ディスプレイサーバーを切り替えるには 「Ubuntu」はデフォルトで2種類のディスプレイサーバーを提供しています。
  • VirtualBox その125 - ゲストOSのUbuntuにLinux Guest Additionsをインストールするには
    ゲストOSのUbuntuにLinux Guest Additionsをインストールするには 仮想マシンにインストールしたゲストOSの「Ubuntu」に、「Linux Guest Additions」をインストールする方法です。
  • Ubuntu 22.04 その98 - 入力ソースとキーボートレイアウトと日本語入力のカスタマイズ
    入力ソースとキーボートレイアウトと日本語入力 「Ubuntu」ではユーザーが利用しているキーボードレイアウトや日本語入力のカスタマイズが可能です。
  • Ubuntuのバージョンと開発コードの対応表
    UbuntuのバージョンとUbuntuの開発コード 「Ubuntu」には各バージョンごとに開発コードが設定されます。
  • Ubuntu 22.04 その99 - 日本語入力(Mozc)の設定をカスタマイズして作業効率を上げよう
    日本語入力(Mozc)の設定をカスタマイズするには 「Ubuntu」では日本語入力に「Mozc」を採用しています。
  • Ubuntu 20.04 その74 - UbuntuとUEFIセキュアブート
    UbuntuとUEFIセキュアブート 「Ubuntu」と「UEFIセキュアブート」に関するお話です。
  • Linux その215 - GNOME 48 リリース・GNOME 48 の新機能と変更点
    GNOME 48 の新機能と変更点 2025年3月19日、GNOME 48(コードネーム:Bengaluru) がリリースされました。 リリースノートから GNOME 48 の新機能と変更点を紹介します。
記事のピックアップ
オプション