https://github.com/nivl/git-go
Basic git implementation in pure Go
https://github.com/nivl/git-go
git go
Last synced: 2 months ago
JSON representation
Basic git implementation in pure Go
- Host: GitHub
- URL: https://github.com/nivl/git-go
- Owner: Nivl
- License: mit
- Created: 2020-06-15T18:45:00.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2023-04-20T23:56:48.000Z (about 3 years ago)
- Last Synced: 2025-09-15T02:02:00.550Z (9 months ago)
- Topics: git, go
- Language: Go
- Homepage:
- Size: 1.72 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://pkg.go.dev/github.com/Nivl/git-go@main)
[](https://codecov.io/gh/Nivl/git-go)
[](https://goreportcard.com/report/github.com/Nivl/git-go)
[](https://github.com/Nivl/git-go/actions?query=workflow%3ABuild)
# git-go
Basic git implementation in pure Go
## Current features
### CLI
#### Porcelain
- [x] init
#### Plumbing
- [x] hash-object
- [x] cat-file
### Library
- [x] Retrieve objects
- [x] Write loose objects
- [x] Read/Write References
## Roadmap
### CLI
See the [CLI project](https://github.com/Nivl/git-go/projects/2)
### Library
See the [Library project](https://github.com/Nivl/git-go/projects/1)
## Dev
We use [task](https://github.com/go-task/task) as task runner / build
tool. The main commands are:
- `task test` to run the tests
- `task install` to install the `git-go` to the GOPATH
- `task build` to create a `git` binary in the `./bin` directory
- `task dev -w` to have the binary at `./bin/git` automatically rebuilt with every change in the code
## Getting Started with the lib
The [git package](https://pkg.go.dev/github.com/Nivl/git-go) should contain
everything you need to do most of the common operations. For more advanced
operations, you should use the [ginternals package](https://pkg.go.dev/github.com/Nivl/git-go/ginternals).
You can take a look at our [smoke tests](https://github.com/Nivl/git-go/tree/main/smoke) for examples of usage.