.gitattributesジェネレーター

行末の正規化、バイナリファイル処理、カスタムdiff/merge設定のための.gitattributesファイルを生成します。

このツールについて

.gitattributesジェネレーターは、Gitリポジトリ用の包括的な .gitattributesファイルを作成するための無料のブラウザベースツールです。 .gitattributesファイルは、Gitがプロジェクト内のファイルを どのように処理するかを制御します。行末の正規化から diffアルゴリズムの選択、マージ戦略まで、これらの設定を 正しく行うことは、異なるOS(Windows、macOS、Linux)で作業する チームにとって重要です。

このツールは、Web(HTML/CSS/JS)、Python、Java、Go、Rust、 C/C++、C#/.NET、Unity、Ruby、PHP、DevOps構成など、 人気の言語やフレームワーク向けのビルド済みテンプレートを 提供します。各テンプレートには、そのエコシステムの一般的な ファイル拡張子に対する正しいtextbinarydiff=language属性が含まれています。複数のテンプレートを 組み合わせ、テキスト正規化(text=autoeol=lfeol=crlf)、diff設定(diff-diffdiff=python)、マージ戦略(merge-merge)、 GitHub Linguist属性(linguist-vendoredlinguist-generatedlinguist-language)を細かく 制御するカスタムルールを追加できます。

.gitignoreファイルも管理している場合は、 .gitignoreジェネレーターをご覧ください。 Gitコマンドをビジュアルに構築するには、 Gitコマンドビルダーをお試しください。 ファイルの差分を比較するには、 Diffビューアーが文字レベルの ハイライト付きの並列ビューを提供します。

すべての処理はブラウザ内で完結します。ファイルパターンや 設定がお使いの端末から外に出ることはなく、サーバーとの やり取り、ログ記録、サードパーティサービスの関与は ありません。

使い方

  1. * text=auto ボタンを切り替えて、推奨されるグローバル行末正規化ヘッダーを含めます。
  2. 1つ以上の言語/フレームワークテンプレートボタンをクリックして、プロジェクトの技術スタックに合った事前設定済みルールを追加します。
  3. Add Ruleをクリックして、ファイルパターン(例:*.csvvendor/**)でカスタムエントリを作成します。
  4. 各カスタムルールについて、ドロップダウンから行末属性(text、text eol=lf、binaryなど)を選択します。
  5. 必要に応じてdiffドライバー(例:diff=python)、マージ戦略mergeまたは-merge)、またはLinguist属性を設定します。
  6. 右側のプレビューパネルで生成された.gitattributesの内容を確認します。
  7. CopyをクリックするかCtrl+Shift+Cを押してクリップボードにコピー、またはDownloadをクリックして.gitattributesファイルとして保存します。

人気の.gitattributes例

すべての.gitattributes例を見る →

よくある質問

* text=autoは何をしますか?

`* text=auto`の行は、Gitにファイルがテキストかバイナリかを自動検出するよう指示します。テキストファイルの場合、Gitはリポジトリに保存する際に行末をLFに正規化し、チェックアウト時にプラットフォームのネイティブな行末(WindowsではCRLF、macOS/LinuxではLF)に変換します。これにより、クロスプラットフォームチームでの行末混在問題を防ぎます。

text属性とbinary属性の違いは何ですか?

`text`属性は、ファイルが行末正規化を行うテキストファイルであることをGitに伝えます。`binary`属性は`-text -diff -merge`の省略形で、Gitは行末の正規化、テキストdiffの生成、3ウェイマージを行いません。画像、コンパイル済みファイル、フォントなどの非テキストアセットには`binary`を使用してください。

diff=languageドライバーはどのように機能しますか?

`diff=python`(または他の言語)を設定すると、Gitに言語対応のdiffドライバーを使用させ、より良いハンクヘッダーを生成します。任意のコンテキスト行を表示する代わりに、変更を含む関数やクラス名を表示します。Gitはpython、java、ruby、php、cpp、csharp、golang、rust、html、css、markdownなどの言語のビルトインサポートがあります。

Linguist属性は何に使われますか?

GitHubのLinguistライブラリは、`.gitattributes`を使用してリポジトリの言語統計を決定します。`linguist-vendored`はファイルをサードパーティコードとしてマークし(統計から除外)、`linguist-generated`は自動生成ファイルをマークし、`linguist-language=X`はファイルパターンの検出言語を上書きします。これらの属性はGitHubの言語バーと統計にのみ影響します。

eol=lfとeol=crlfのどちらを使うべきですか?

開発者のOSに関係なく常にUnix形式の行末が必要なファイル(シェルスクリプト.shやMakefileなど)には`eol=lf`を使用します。Windows形式の行末が必要なファイル(.slnファイルやバッチスクリプト.bat、.cmdなど)には`eol=crlf`を使用します。その他のほとんどのファイルには、明示的なeol設定なしの`text=auto`で十分です。

データは安全ですか?

はい。すべての処理はJavaScriptを使用してブラウザ内で完全に実行されます。データがサーバーに送信されることはありません。ファイルパターンや設定がお使いの端末から外に出ることはありません。ツール使用中にブラウザの開発者ツールのネットワークタブで確認できます。

merge属性はどのように機能しますか?

`merge`属性はファイルの3ウェイマージを有効にします(テキストファイルのデフォルト)。`-merge`属性はマージを無効にし、両側がファイルを変更した場合、Gitは常にコンフリクトを報告します。Unityのシーンファイルのように`merge=unityyamlmerge`などのカスタムマージドライバーを指定することもできます。これはUnityアセットのYAML構造を理解する専用のマージツールを使用します。

関連ツール