はじめに
この実験では、設定された Git のユーザーメールアドレスを確認する方法を学びます。Git がこの情報をどのように保存し、取得するかを調べ、グローバル設定とローカル設定の違いを理解します。
現在のメール設定を表示するコマンドを実行し、グローバル設定を明示的に確認し、メールアドレスが設定されていない場合の Git の動作を確認します。この実践的な経験を通じて、Git がコミットをどのように属性付けするか、および異なるリポジトリで自分のアイデンティティをどのように管理するかを理解するのに役立ちます。
git config user.email を実行する
このステップでは、Git がメールアドレスをどのように保存するかを調べます。Git はコミット履歴であなたを識別するためにメールアドレスを使用します。これは、誰がどの変更を行ったかを追跡するために重要です。特に、他の人と共同作業する場合には、この追跡が重要になります。
以前、セットアップセクションでグローバルなメールアドレスを設定しました。Git がこの情報をどのように取得するかを見てみましょう。
ターミナルを開き、次のコマンドを実行します。
git config user.email
グローバルに設定されたメールアドレスが表示されるはずです。
jane.doe@example.com
このコマンドは、Git に user.email 設定の値を表示するように指示します。--global または --local を指定せずに git config を実行すると、Git は特定の順序で設定を確認します。まずローカル(リポジトリ固有)、次にグローバル(ユーザー固有)、最後にシステム全体の設定を確認します。これまでグローバル設定のみを設定しているため、グローバル値が表示されます。
Git がメールアドレスなどの設定をどのように保存し、取得するかを理解することは、Git 環境をカスタマイズし、コミットが正しくあなたに帰属することを保証するために重要です。
グローバルとローカルのメール設定を確認する
このステップでは、グローバルとローカルの Git 設定の違い、特に user.email 設定について調べます。
Git では、異なるレベルで設定を行うことができます。
- システムレベル:システム上のすべてのユーザーに適用されます。
- グローバルレベル:システム上の特定のユーザーに適用されます(これはセットアップで設定したものです)。
- ローカルレベル:現在の Git リポジトリにのみ適用されます。
ローカル設定はグローバル設定を上書きし、グローバル設定はシステム設定を上書きします。
まず、--global フラグを使用してグローバルなメール設定を明示的に確認しましょう。
git config --global user.email
前と同じメールアドレスが表示されるはずです。
jane.doe@example.com
次に、前の実験で作成した my-time-machine リポジトリに対して、ローカル のメールアドレスを設定してみましょう。~/project/my-time-machine ディレクトリ内にいることを確認してください。
cd ~/project/my-time-machine
git config user.email "local.user@example.com"
このコマンドは、現在のリポジトリ (my-time-machine) のみ の user.email を設定します。今回は --global フラグを使用していないことに注意してください。
次に、my-time-machine ディレクトリ内にいる状態で、フラグを指定せずに user.email を再度確認しましょう。
git config user.email
何が表示されますか?
local.user@example.com
ローカルのメールアドレスが表示されました!これは、この特定のリポジトリ内では、ローカル設定がグローバル設定よりも優先されることを示しています。
もし my-time-machine ディレクトリの外に移動して、再度 git config user.email を実行すると、ローカル設定が存在しないため、グローバルのメールアドレスが表示されます。
このようにローカル設定を行う機能は非常に便利です。たとえば、個人プロジェクトには個人のメールアドレスを使用し(グローバル設定)、仕事関連のプロジェクトには仕事用のメールアドレスを使用する(それらの仕事プロジェクトのリポジトリ内でのローカル設定)ことができます。
未設定のメールでテストする
このステップでは、Git のローカルレベルに user.email が設定されていないが、グローバルレベルに設定されている場合に何が起こるかを見てみます。これにより、設定の優先順位の概念が強化されます。
まず、my-time-machine ディレクトリにいることを確認しましょう。
cd ~/project/my-time-machine
次に、--unset フラグを使用して、ローカルの user.email 設定を解除します。
git config --unset user.email
このコマンドは、ローカルリポジトリの設定から user.email 設定を削除します。グローバル設定には影響を与えません。
ローカル設定が削除されたことを確認するために、設定を取得してみましょう。
git config --local user.email
ローカルレベルで設定キーが見つからないことを示すエラーメッセージが表示されるはずです。
error: key 'user.email' not found
次に、my-time-machine ディレクトリ内にいる状態で、フラグを指定せずに user.email を再度確認しましょう。
git config user.email
何が表示されると予想されますか?ローカル設定が解除されているため、Git はグローバル設定にフォールバックするはずです。
jane.doe@example.com
予想通り、再びグローバルのメールアドレスが表示されました!これは、ローカル設定が存在しない場合、Git がグローバル設定を使用することを確認します。
このステップでは、Git 設定の階層構造を示しています。Git はまずローカルレベルで設定を探します。そこで見つからない場合は、グローバルレベル、次にシステムレベルを探します。これにより、異なるプロジェクトのニーズに応じて柔軟な設定が可能になります。
まとめ
この実験では、git config user.email コマンドを使用して、設定された Git ユーザーのメールアドレスを確認する方法を学びました。Git がこの情報を取得する方法、すなわちローカル設定、次にグローバル設定、最後にシステム設定の優先順位で情報を取得する方法を調べました。また、--global フラグを使用してグローバルなメール設定を明示的に確認し、グローバル設定とローカル設定のレベルの違いとその優先順位を理解しました。



