Gitの動作をカスタマイズ:設定、エイリアス、重要なファイル

便利な設定、明確なエイリアス、.gitignoreや.gitattributesなどの重要なファイルを使ってGitをカスタマイズしましょう。

Gitの動作をカスタマイズ:設定、エイリアス、重要なファイル

Gitの動作をカスタマイズすると、日常のバージョン管理をより速く、安全に、予測可能にすることができます。適切なGit設定、エイリアス、重要なファイルを整えることで、ローカルのワークフローをチームの実際のソフトウェア開発に合わせることができます。

目標は、誰にも理解できない凝った設定を作ることではありません。目標は、リポジトリの監査とサポートを容易に保ちながら、一般的なタスクの摩擦を取り除くことです。

Git設定の仕組み

Gitは複数の場所から設定を読み取り、より近い設定が優先されます。これは、Gitが間違った名前、エディター、マージツール、改行コード、署名動作を使用する理由をデバッグする際に重要です。

3つの主要な設定スコープは次のとおりです。

  • システム:マシン上のすべてのユーザーに適用されます。
  • グローバル:ユーザーアカウントに適用されます。
  • ローカル:現在のリポジトリにのみ適用されます。

通常はグローバル設定とローカル設定を操作します。グローバル設定は、ユーザーID、デフォルトのエディター、一般的なエイリアスに適しています。ローカル設定は、仕事用プロジェクトで異なるメールアドレスを使用するなど、リポジトリ固有の動作に適しています。

次のコマンドを使用して、設定の出所を確認します。

git config --list --show-origin
git config user.email
git config --local user.email
git config --global user.email

たとえば、個人のメールをグローバルに使用する場合:

git config --global user.name "Alex Morgan"
git config --global user.email "[email protected]"

次に、仕事用リポジトリ内で、メールのみを上書きします:

git config --local user.email "[email protected]"

これにより、個人のIDで会社のリポジトリに誤ってコミットするのを防ぎます。また、コンプライアンス、所有権、コードレビューのためにコミット履歴をクリーンに保ちます。

ID設定の詳細については、Gitユーザー設定の習得を参照してください。

最初にカスタマイズする便利な設定

明確さを向上させ、小さなミスを防ぐ設定から始めましょう。実際に価値を得るために、巨大な設定ファイルは必要ありません。

適切なベースラインには、デフォルトのブランチ名が含まれます:

git config --global init.defaultBranch main

好みのエディターを設定して、Gitがコミットメッセージ、リベース計画、マージノートを実際に使用するツールで開くようにします:

git config --global core.editor "code --wait"

macOS、Linux、Windowsで作業する場合、改行コードに注意が必要です。多くのチームは、リポジトリ内の改行コードを正規化し、各開発者のエディターで表示を処理することを選択します。一般的なWindows設定は次のとおりです:

git config --global core.autocrlf true

macOSまたはLinuxでは、チームは次のように使用することがよくあります:

git config --global core.autocrlf input

既存のリポジトリで改行コードの設定を軽率に変更しないでください。すべての行が変更されたように見える巨大な差分が表示された場合は、コミットする前に.gitattributesを確認して停止してください。

Gitの出力をより読みやすくすることもできます:

git config --global color.ui auto
git config --global column.ui auto
git config --global branch.sort -committerdate
git config --global tag.sort version:refname

プルするときは、チームが期待する動作を選択します:

git config --global pull.rebase false

または:

git config --global pull.rebase true

どちらのオプションも普遍的に正しいわけではありません。マージベースのプルはマージコミットを保持します。リベースベースのプルは線形のローカル履歴を維持します。重要なのは、意図的に選択し、チームの期待を文書化することです。

時間を節約するGitエイリアスの作成

Gitエイリアスは、長いコマンドを短く覚えやすいショートカットに変換します。これらは、1日に何度も実行するコマンドに特に便利です。

読みやすい実用的なエイリアスを次に示します:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.last "log -1 HEAD --stat"
git config --global alias.unstage "restore --staged"

その後、git stでステータスを表示し、git unstage file.txtでワーキングコピーに触れずにステージングエリアからファイルを削除します。

ログエイリアスは、多くのチームが最も価値を得る場所です:

git config --global alias.lg "log --oneline --decorate --graph --all"

これで、次のコマンドを実行できます:

git lg

これにより、ブランチ、タグ、コミットのコンパクトなグラフが表示されます。リベース、マージ、またはローカルブランチのクリーンアップの前に便利です。

エイリアスは、チームメイトが何をするか推測できる程度にわかりやすく保ちます。git saveのようなエイリアスは、作成者によってコミット、スタッシュ、またはその他の意味になる可能性があります。git unstageのようなエイリアスは明白です。

エイリアスは次の方法で確認できます:

git config --global --get-regexp '^alias\.'

その他の例については、カスタムGitエイリアスの作成を参照してください。

知っておくべき重要なGitファイル

Gitの動作はgit configだけで制御されるわけではありません。いくつかのリポジトリファイルが、追跡、無視、正規化、保護される内容を形成します。

最も一般的なファイルは.gitignoreです。これは、追跡しないファイルをGitに指示します。一般的なエントリには、ビルド出力、ローカル環境ファイル、エディターフォルダー、依存関係キャッシュが含まれます:

node_modules/
dist/
.env
.DS_Store

広範なパターンには注意してください。*.jsonを無視すると、生成されたファイルが隠れる可能性がありますが、重要な設定も隠れる可能性があります。可能な場合は、特定のディレクトリまたはファイル名を無視します。

.gitattributesファイルは、Gitがファイルタイプをどのように扱うかを制御します。これは、改行コード、生成されたファイル、linguistの動作、マージ戦略に役立ちます:

* text=auto
*.sh text eol=lf
*.bat text eol=crlf

これは、異なるオペレーティングシステムを使用するチームで特に役立ちます。ノイズの多い差分を減らし、間違った改行コードのためにスクリプトが壊れるのを防ぎます。

.git/configファイルは、ローカルリポジトリの設定を保存します。通常はgit config --localで編集しますが、これを読むと、リモート、ブランチ追跡、リポジトリ固有のオプションのトラブルシューティングに役立ちます。

Gitフックは.git/hooks/の下にあります。これらは、コミット、プッシュ、マージ、その他のイベントの前にスクリプトを実行できます。デフォルトでは、フックはローカルであり、アクティブなスクリプトとしてコミットされません。フックに依存するチームは、セットアップスクリプトまたはフックマネージャーを使用して一貫してインストールすることがよくあります。

ヘルプを求めるタイミング

ほとんどのGit設定変更は安全ですが、コンテキストなしで適用するとチームを混乱させる可能性があります。改行コードルール、マージドライバー、署名要件、共有フック動作を変更する前に、シニアエンジニア、DevOpsエンジニア、またはリポジトリ所有者に相談してください。

また、保護されたリポジトリで間違ったIDでコミットが表示されている場合も、ヘルプを求める必要があります。コードがプッシュされた後に作成者メタデータを修正するには、履歴の書き換えが必要になる場合があり、そのブランチを使用しているすべての人に影響します。

Gitの動作が突然変わった場合は、git config --list --show-originから始めてください。この1つのコマンドで、推測するよりも早く謎が解明されることがよくあります。

思慮深いカスタマイズにより、何が起こっているかを隠すことなく、Gitの繰り返し作業を減らすことができます。エイリアスを明確に保ち、リポジトリルールを文書化し、1つのプロジェクトが他のマシンと異なる動作を必要とする場合はローカル設定を使用します。