はじめに
この実験では、Git リポジトリ内の特定の設定を確認する方法を学びます。まず、git config コマンドを使用して個々の設定を照会し、グローバルなユーザー名やメールアドレスなどの値を取得する方法を理解します。
次に、Git 設定の異なるレベルを探索し、特にグローバル設定とローカル設定の違いに焦点を当てます。両方のレベルですべての設定をリストアップし、それらがどのように適用されるか、およびローカル設定がグローバル設定を上書きする方法を学びます。最後に、要求された設定値が存在しない場合の対処方法を説明します。
git config を使用して設定を照会する
このステップでは、git config コマンドを使用して Git の設定を照会する方法を学びます。Git は設定ファイルを使用して、その動作を制御する設定を保存します。これらの設定は、グローバルに(すべての Git リポジトリに)またはローカルに(特定のリポジトリに)適用することができます。
まず、グローバル設定を確認してみましょう。セットアップセクションで、グローバルにユーザー名とメールアドレスを設定しました。--global フラグと設定名 user.name を使用して、グローバルなユーザー名を照会することができます。
git config --global user.name
セットアップで設定した名前が表示されるはずです。
Jane Doe
次に、グローバルなユーザーのメールアドレスを照会してみましょう。
git config --global user.email
設定したメールアドレスが表示されるはずです。
jane.doe@example.com
これらのコマンドは、このシステム上のすべてのリポジトリでコミットする際に、Git がデフォルトで使用する値を示しています。これらの設定を照会する方法を理解することは、Git の設定を管理する最初のステップです。
グローバル設定とローカル設定を確認する
このステップでは、Git のグローバル設定とローカル設定の違い、およびすべての設定を表示する方法を探索します。
Git には異なるレベルの設定があります。最も一般的なものは以下の通りです。
- システムレベル:システム上のすべてのユーザーに適用されます。(個人ユーザーにはあまり使われません)
- グローバルレベル:システム上のあなたのユーザーアカウントに適用され、あなたのすべてのリポジトリに影響します。これは
~/.gitconfigに保存されます。 - ローカルレベル:現在のリポジトリにのみ適用されます。これはリポジトリ内の
.git/configに保存されます。
ローカル設定はグローバル設定を上書きし、グローバル設定はシステム設定を上書きします。
すべてのグローバル設定を表示するには、--global --list フラグを使用できます。
git config --global --list
以下のような出力が表示され、設定した user.name と user.email、および init.defaultBranch が表示されるはずです。
user.name=Jane Doe
user.email=jane.doe@example.com
init.defaultBranch=master
次に、my-time-machine リポジトリ内にローカル設定を作成しましょう。リポジトリのディレクトリに戻ります。
cd ~/project/my-time-machine
この特定のリポジトリにのみ適用されるローカルのユーザー名を設定できます。別の名前を使用しましょう。
git config user.name "Time Traveler"
今回は --global フラグを使用していないことに注意してください。これは、Git に現在のリポジトリに対してローカルに設定を行うよう指示します。
次に、--local --list を使用してこのリポジトリのローカル設定を表示しましょう。
git config --local --list
先ほど設定したローカルのユーザー名が表示されるはずです。
user.name=Time Traveler
最後に、現在のリポジトリに適用されるすべての設定(ローカル設定とグローバル設定の両方)を表示しましょう。Git はローカル設定を優先するため、最初にローカル設定が表示されます。
git config --list
出力にはローカル設定とグローバル設定の両方が表示されます。user.name が "Time Traveler"(ローカル設定)を表示し、user.email が "jane.doe@example.com"(ローカルのメールアドレスを設定していないためグローバル設定)を表示していることに注意してください。
user.name=Time Traveler
user.email=jane.doe@example.com
init.defaultBranch=master
これは、Git がローカル設定をグローバル設定よりも優先する方法を示しています。
欠落した設定値を処理する
このステップでは、存在しない Git の設定値を照会しようとしたときに何が起こるか、および Git がこれをどのように扱うかを見ていきます。
時々、グローバルまたはローカルのいずれにも設定されていない設定を照会しようとすることがあります。明示的に設定していない架空の設定 core.editor を照会してみましょう。
git config core.editor
my-time-machine リポジトリにローカルの core.editor を設定していないため、Git はグローバルの core.editor を探します。それも設定されていない場合(この環境ではその通りです)、Git はエラーで終了し、何も表示しないか、システム全体で設定されているデフォルト値を表示します。システムのデフォルト設定によっては、以下のような出力が表示されるか、まったく出力がないことがあります。
重要なのは、Git がローカルまたはグローバルの設定ファイルに core.editor の特定の値を見つけられないということです。
次に、グローバルには存在するがローカルには存在しない設定、例えば user.email を照会してみましょう。
git config user.email
ローカルの user.name を設定した my-time-machine ディレクトリにいるにもかかわらず、ローカルの user.email は設定していません。Git はまずローカルの user.email を探します。見つからないため、次にグローバルの user.email を探し、その値を返します。
jane.doe@example.com
これは、ローカル設定が欠落している場合、Git がグローバル設定にフォールバックすることを確認しています。
Git が設定値を検索する方法(まずローカル、次にグローバル、最後にシステム)を理解することは、トラブルシューティングや Git 環境の効果的な管理に不可欠です。
まとめ
この実験では、git config コマンドを使用して Git の設定を照会する方法を学びました。まず、--global フラグを使用して user.name や user.email などの特定のグローバル設定を照会しました。これにより、システム上のすべてのリポジトリに適用される個々の設定値を取得する方法を実証しました。
次に、Git の設定の異なるレベル(システム、グローバル、ローカル)を探索し、ローカル設定がグローバル設定を上書きすることを理解しました。git config --global --list を使用してすべてのグローバル設定をリストアップし、ユーザーアカウントに適用される完全な設定を確認する方法を学びました。これにより、Git が使用するデフォルト設定の包括的なビューが得られました。



