go-git is a highly extensible git implementation library written in pure Go.
It can be used to manipulate git repositories at low level (plumbing) or high level (porcelain), through an idiomatic Go API. It also supports several types of storage, such as in-memory filesystems, or custom implementations, thanks to the Storer
interface.
It's being actively developed since 2015 and is being used extensively by Keybase, Gitea or Pulumi, and by many other libraries and tools.
After the legal issues with the src-d
organization, the lack of update for four months and the requirement to make a hard fork, the project is now back to normality.
The project is currently actively maintained by individual contributors, including several of the original authors, but also backed by a new company, gitsight, where go-git
is a critical component used at scale.