git implementation in Go