Git puts the upper file size limit at 100 MB. So what can you do if you have files bigger than that? Git Large File Storage (Git LFS) is an open source extension to Git that allows you to work with large text-files. It lets you store files up to 2 GB in size.


If you have files in a repository that are bigger than 100 MB, you need to use gif-lfs (lfs - large file size) extension on your client. The server must have support for gif-lfs. Github includes git-lfs support.

The upper file size limit of Git is 100 MB. The upper file size limit of git-lfs is 2 GB. [1], [2]

Client Installation

On Linux-distributions using the deb package system, you get the packages with the following command [3]:
$ curl -s | sudo bash
[sudo] password for ... : 
Detected operating system as Ubuntu/xenial.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/github_git-lfs.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.

The repository is setup! You can now install packages.

Install git-lfs with apt:

$ sudo apt-get install git-lfs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed
0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade.
Need to get 2.815 kB of archives.
After this operation, 11,5 MB of additional disk space will be used.
Get:1 xenial/main amd64 git-lfs amd64 2.3.4 [2.815 kB]
Fetched 2.815 kB in 2s (978 kB/s)    
Selecting previously unselected package git-lfs.
(Reading database ... 228238 files and directories currently installed.)
Preparing to unpack .../git-lfs_2.3.4_amd64.deb ...
Unpacking git-lfs (2.3.4) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up git-lfs (2.3.4) ...
Git LFS initialized.

Other package downloaders:


$ curl -s | sudo bash


$ curl -s | bash


$ curl -s | bash

You can also get the packages from the git-lfs-page on Package Cloud

Finally, verify the installation:

$ git lfs install
Git LFS initialized.

Using git-lfs

The first step is to specify file patterns to store with Git LFS, stored in the file .gitattributes.:

$ mkdir large-file-repo
$ cd large-file-repo
$ git init

Add a filter that causes all zip files to be handled through Git LFS:

$ git lfs track "*.csv"

Now you can push commits:

$ git add .gitattributes
$ git add test.csv
$ git commit -m "add csv files"

Check that Git LFS is managing your zip-file:

$ git lfs ls-files

As you can see, git-lfs operations are seamless, which means that you can use git-lfs without changing your existing Git workflow. Note that git clone and git pull operations will be faster as you only download the versions of large files referenced by commits that you check out, not every version of the file.

OBS: The fact that you only have a reference to the files in the local repository, also means that you will only see that reference until you check out the file. Moreover, when you check out the file, the download may take some time due to file size. If you want to have all files complete in the local repository, use git lfs pull.

In Depth

There are several good in-depth guides on how to use git-lfs. The best I have come across is Git LFS by Atlassian. [4]


[1] - GitHub Help: Managing Large Files -

[2] - git-lfs ReadMe -

[3] - git-lfs-page on Package Cloud -

[4] - Git LFS, by Atlassian -

Comments (2)

This comment was minimized by the moderator on the site

That sorted me out... THX!!!

This comment was minimized by the moderator on the site

The Atlassian guide is really good!!!

There are no comments posted here yet

Leave your comments

  1. Posting comment as a guest.
0 Characters
Attachments (0 / 3)
Share Your Location
HubbaBubba posted a comment in git-lfs - Git For Big Files
The Atlassian guide is really good!!!
DoGr8 posted a comment in git-lfs - Git For Big Files
That sorted me out... THX!!!
Eric Eikrem posted a comment in Erlang 3: Syntax in Functions
You are right! Fixed. Thanks for heads-up
mammon88 posted a comment in Erlang 3: Syntax in Functions
You say that andalso, orelse can be nested inside guards. Example pls.
The Penguin posted a comment in Erlang 3: Syntax in Functions
Seems something's missing after "Running the code gives us:" ...