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. go-git aims to be fully compatible with git, all the porcelain operations are implemented to work exactly as git does.
Features
- go-git is a highly extensible git implementation library written in pure Go
- Apache License Version 2.0
- It also supports several types of storage
- It can be used to manipulate git repositories at low level (plumbing)
- Manipulate git repositories at high level (porcelain)
- Custom implementations