Git Large File Storage (LFS) is an extension for Git that allows you to manage large files efficiently in your GitLab repositories by keeping their actual content in a separate storage and only tracking references in your repository.
git lfs track "*.psd"
git add .gitattributes
git add my_large_file.psd
git commit -m "Add large PSD file"
git push origin main
What is Git LFS?
Understanding Git LFS
Git LFS, or Git Large File Storage, is an extension to Git that helps manage large files seamlessly. Traditional Git keeps the entire repository history, including the content of large files. As a result, repositories can become unwieldy and slow, especially when handling large binaries or datasets. Git LFS changes this by storing large files externally and replacing them with small pointers inside your Git repository, which significantly reduces the size of the repository.
Using Git LFS offers several benefits:
- Reduced File Sizes: Larger files are stored outside of your Git repository, leading to a lighter and faster clone.
- Enhanced Performance: Fewer files in the repository accelerate operations, making tasks like cloning, fetching, and pushing quicker.
- Easier Collaboration: Team members can manage large files without affecting their local environments significantly.
When to Use Git LFS
Git LFS is particularly useful in specific scenarios:
- When dealing with large binaries such as images (e.g., .jpg, .png), videos (e.g., .mp4, .mov), or audio files (e.g., .mp3).
- If your project includes datasets that are too large to efficiently manage in standard Git.
- For repositories focused on game development where large textures and executable files are common.
Choosing to implement Git LFS means you reduce complexity and enhance performance for your development workflow.

Setting Up Git LFS on GitLab
Prerequisites
Before you start using Git LFS with GitLab, ensure you have the following:
- Git installed on your machine.
- Git LFS installed, which you can verify by running `git lfs --version`.
- A GitLab account where you can create or push your repositories.
Installing Git LFS
To install Git LFS, follow these steps according to your operating system:
-
For Linux, run the following command:
sudo apt-get install git-lfs
-
For macOS, use Homebrew:
brew install git-lfs
Once installed, initialize Git LFS in your shell using:
git lfs install
This command sets up Git LFS and prepares it for use in your Git repositories.

Configuring Git LFS for Your Repository
Initializing Git LFS
To begin using Git LFS, you need to enable it in your local repository. If you haven't created a repository yet, start with:
git init <repository-name>
Next, track the file types you want Git LFS to manage by using the `git lfs track` command. For example, if you want to track Photoshop files, you would execute:
git lfs track "*.psd"
This command adds an entry to a .gitattributes file in your directory, indicating which file types should be managed by LFS.
Adding Files to LFS
After configuring your file types, you can now add your large files to LFS. First, ensure your .gitattributes file is staged:
git add .gitattributes
Then, you can add the large file you wish to track:
git add my-large-image.psd
Committing Changes
Whenever you add or track files using Git LFS, you need to commit your changes like you would with any Git repository:
git commit -m "Add large image using Git LFS"
This commits both the changes to your tracked files and the pointer files created by LFS.

Using GitLab with Git LFS
Pushing to GitLab
Once you have committed your changes locally, you can push your repository with LFS files to GitLab. Start by adding the remote repository:
git remote add origin <your_gitlab_repo>
Now push your changes:
git push -u origin main
Git LFS automatically handles the large files during the push, ensuring they are uploaded to GitLab's LFS storage.
Verifying LFS Files in GitLab
After the push, you can log into your GitLab account and navigate to your repository. GitLab provides a clear view of large files tracked by LFS, showing both the file size and the number of stored versions.

Collaborating with Git LFS
Cloning a Repository with LFS
When you clone a repository that uses Git LFS, the LFS files are not stored as full content in the local clone; instead, pointers are created which get replaced by the actual files upon fetching. You can clone your repository using:
git clone <your_gitlab_repo>
Handling Large Files After Cloning
After cloning, when you want to fetch the actual LFS files, run:
git lfs pull
This fetches all the referenced objects from LFS storage for your local clone.

Troubleshooting Common Git LFS Issues
Common Problems and Fixes
While using Git LFS on GitLab, you may encounter certain common issues. One frequent problem is when Git displays pointer files instead of content. This typically indicates that LFS objects were not handled correctly during an operation.
Fixes include:
- Ensuring you have run `git lfs install` in your repository.
- Running `git lfs fetch` or `git lfs pull` to download the necessary files.
Resources for Further Help
If you encounter more complex issues or have questions, refer to:
- The official Git LFS documentation for in-depth guidelines.
- The GitLab community forums, where you can seek help from other developers.

Best Practices for Using Git LFS on GitLab
File Management Tips
When using Git LFS, consider these best practices:
- Avoid tracking files that don’t exceed Git’s size limits. Use Git LFS primarily for very large files.
- Regularly clean up unused LFS objects using:
git lfs prune
Monitoring Storage Usage
GitLab provides a storage quota for LFS files. To keep track of your LFS usage, navigate to your GitLab project settings and check the usage section. Ensure your LFS storage remains within limits to avoid extra charges or access issues.

Conclusion
Utilizing Git LFS on GitLab greatly increases your ability to manage large files effectively within your repositories. By minimizing local repository sizes and streamlining collaboration, it enhances your workflow, making it essential for anyone working with sizeable assets.

Call to Action
Now that you're equipped with the knowledge to implement Git LFS on GitLab efficiently, consider diving deeper into our tutorials and courses. Empower yourself with the skills to master Git commands and other advanced techniques that will revolutionize your developmental practices.