1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git LFS 超入門

Last updated at Posted at 2025-09-25

Git LFS とは?

Git LFS (Large File Storage) は、画像や動画などの巨大なファイルをGitで効率的に扱うための拡張機能です。リポジトリが巨大化し、動作が遅くなるのを防ぎます。

任意の方法でインストールし、対象のリポジトリで git lfs install すると使用できます。
https://git-lfs.com/

$ cd path/to/repository
$ git lfs install

使い方

本記事は具体的な2つのユースケースを題材に、下記のコマンドについて扱っています。

  • これから追加するファイルをGit LFSで管理する: git lfs track
  • 過去にコミットされたファイルをGit LFSで管理する: git lfs migrate

これから追加するファイルをGit LFSで管理する

1. Git LFSで管理するファイルの種類を指定する

拡張子がpsdのファイルをGit LFSで管理する場合

$ git lfs track "*.psd"

このコマンドを実行すると、リポジトリのルートに .gitattributes というファイルが作成(または追記)されます。このファイルには、.psd ファイルをLFSで管理するための設定が書き込まれます。

.gitattributes
*.psd filter=lfs diff=lfs merge=lfs -text

2. .gitattributes ファイルをコミットする

LFSの設定をリポジトリに反映させるためコミットをする。

$ git add .gitattributes
$ git commit

3. 対象のファイルを追加してコミットする

以降、拡張子がpsdのファイルをコミットするとGit LFSで管理されます。

$ git add hoge.psd
$ git commit

# Git LFS管理されているファイルを一覧表示させる
$ git lfs ls-files
3b2cc23011 * hoge.psd

過去にコミットされたファイルをGit LFSで管理する

git lfs track での設定は、それ以降にコミットされるファイルにしか適用されません。既にGitの履歴に直接コミットされてしまった巨大なファイルをLFSに移行するには git lfs migrate コマンドを使います。

$ git lfs migrate import --everything --include="*.psd"

すべてのブランチとタグ (--everything) を対象に、過去のコミット履歴に含まれる .psd ファイルをすべて検索し、Git LFSの管理下に置き換えます。

注意点: コミット履歴が書き換えられます
git lfs migrate を実行すると、対象ファイルを含むコミット、およびそれ以降のすべてのコミット履歴が書き換えられます(コミットハッシュが変わります)。

なぜ巨大なファイルをGitで直接管理してはいけないのか?

Gitで巨大なファイルを直接管理すると、主に「リポジトリの肥大化」と、それに伴う「パフォーマンスの低下」という問題が発生します。

Gitは画像、動画、音声などの差分管理に難があります。
上記バイナリファイルを少しでも変更すると、Gitは差分ではなく、変更後のファイル全体を新しいデータとして履歴に保存してしまいます。

具体例

  1. 100MBのPSDファイルをコミットする。
  2. そのPSDファイルを少し修正して、再度コミットする。
  3. さらに修正して、またコミットする。

この時点で、リポジトリの履歴内(.gitディレクトリ)には、見た目上はファイルが1つでも、実質的に約300MB(100MB × 3つのバージョン)のデータが溜め込まれてしまいます。これを繰り返すと、リポジトリは肥大化しやすいです。

上記は問題は1例ですが、Git LFSを使用すると、Git内部でテキスト・ポインタに置き換え、ファイルの実体は、GitHubやGitLabなどが提供する専用のLFSストレージに別途保存します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?