git-annex allows managing files with git, without checking the file contents into git. While that may seem paradoxical, it is useful when dealing with files larger than git can currently easily handle, whether due to limitations in memory, time, or disk space.

git-annex is designed for git users who love the command line. For everyone else, the git-annex assistant turns git-annex into an easy to use folder synchroniser.

To get a feel for git-annex, see the walkthrough.

key concepts

the details

other stuff

use case: The Archivist

Bob has many drives to archive his data, most of them kept offline, in a safe place.

With git-annex, Bob has a single directory tree that includes all his files, even if their content is being stored offline. He can reorganize his files using that tree, committing new versions to git, without worry about accidentally deleting anything.

When Bob needs access to some files, git-annex can tell him which drive(s) they're on, and easily make them available. Indeed, every drive knows what is on every other drive.
more about location tracking

Bob thinks long-term, and so he appreciates that git-annex uses a simple repository format. He knows his files will be accessible in the future even if the world has forgotten about git-annex and git.
more about future-proofing

Run in a cron job, git-annex adds new files to archival drives at night. It also helps Bob keep track of intentional and unintentional copies of files, and logs information he can use to decide when it's time to duplicate the content of old drives.
more about backup copies

use case: The Nomad

Alice is always on the move, often with her trusty netbook and a small handheld terabyte USB drive, or a smaller USB keydrive. She has a server out there on the net. She stores data, encrypted in the Cloud.

All these things can have different files on them, but Alice no longer has to deal with the tedious process of keeping them manually in sync, or remembering where she put a file. git-annex manages all these data sources as if they were git remotes.
more about special remotes

When she has 1 bar on her cell, Alice queues up interesting files on her server for later. At a coffee shop, she has git-annex download them to her USB drive. High in the sky or in a remote cabin, she catches up on podcasts, videos, and games, first letting git-annex copy them from her USB drive to the netbook (this saves battery power).
more about transferring data

When she's done, she tells git-annex which to keep and which to remove. They're all removed from her netbook to save space, and Alice knows that next time she syncs up to the net, her changes will be synced back to her server.
more about distributed version control

If that describes you, or if you're some from column A and some from column B, then git-annex may be the tool you've been looking for to expand from keeping all your small important files in git, to managing your large files with git.

Recent news

version 6.20170925
Posted Mon Sep 25 15:35:35 2017
version 6.20170818
Posted Fri Aug 18 15:20:03 2017

devblog

day 475 assistant exports
Posted Wed Sep 20 19:36:48 2017
day 474 tracking exports
Posted Tue Sep 19 20:24:19 2017
day 473 distributed use of exports
Posted Mon Sep 18 23:23:06 2017
day 472 removing empty directories
Posted Fri Sep 15 19:54:30 2017
day 471 export to more remotes
Posted Tue Sep 12 22:35:14 2017

Recent videos

git-annex assistant lan
Posted Wed Jun 4 16:49:34 2014
git-annex views demo
Posted Thu Feb 20 17:23:07 2014

Recent forum posts

Add files to direct mode repos
Posted Sun Sep 24 06:15:47 2017
git-annex doesn't build with feed-1.0.0.0
Posted Thu Sep 21 16:18:53 2017
sync remote repo on local sync upstream
Posted Mon Sep 18 14:28:17 2017
Syncing with 'include' rule for duplicate files
Posted Fri Sep 15 14:33:29 2017
Shared directory with non git-annex users
Posted Thu Sep 7 09:38:28 2017

git-annex is Free Software, written in Haskell. You can contribute!

git-annex's wiki is powered by Ikiwiki and hosted by Branchable.