diff --git a/pkg/provider/git.go b/pkg/provider/git.go
index cd380bd7525805099ee02bf054f45ffda7178ef0..0228ce4f59ea0599469cd93a09f6adecc2e464ff 100644
--- a/pkg/provider/git.go
+++ b/pkg/provider/git.go
@@ -25,22 +25,22 @@ type Repository struct {
 }
 
 func (repo *Repository) Init(config map[string]string) error {
-	repo.defaultBranch = config["defaultBranch"]
+	repo.defaultBranch = config["default_branch"]
 	if repo.defaultBranch == "" {
 		repo.defaultBranch = "master"
 	}
 
-	repo.taggerName = config["taggerName"]
+	repo.taggerName = config["tagger_name"]
 	if repo.taggerName == "" {
 		repo.taggerName = "semantic-release"
 	}
 
-	repo.taggerEmail = config["taggerEmail"]
+	repo.taggerEmail = config["tagger_email"]
 	if repo.taggerEmail == "" {
 		repo.taggerEmail = "git@go-semantic-release.xyz"
 	}
 
-	gitPath := config["gitPath"]
+	gitPath := config["git_path"]
 	if gitPath == "" {
 		gitPath = "."
 	}
diff --git a/pkg/provider/git_test.go b/pkg/provider/git_test.go
index f0da8ee8df9e6986d68b8fa403a836220fc42ae3..e625eaf06ef52ca446b2867bf7b9a4a97345df02 100644
--- a/pkg/provider/git_test.go
+++ b/pkg/provider/git_test.go
@@ -1,8 +1,16 @@
 package provider
 
 import (
+	"fmt"
+	"io/ioutil"
+	"strings"
 	"testing"
+	"time"
 
+	"github.com/go-git/go-git/v5"
+	"github.com/go-git/go-git/v5/plumbing"
+	"github.com/go-git/go-git/v5/plumbing/object"
+	"github.com/go-semantic-release/semantic-release/v2/pkg/provider"
 	"github.com/stretchr/testify/require"
 )
 
@@ -11,4 +19,135 @@ func TestNewRepository(t *testing.T) {
 	repo := &Repository{}
 	err := repo.Init(map[string]string{})
 	require.EqualError(err, "repository does not exist")
+
+	gitPath, err := setupRepo()
+	require.NoError(err)
+
+	repo = &Repository{}
+	err = repo.Init(map[string]string{
+		"git_path":       gitPath,
+		"default_branch": "development",
+		"tagger_name":    "test",
+		"tagger_email":   "test@test.com",
+	})
+	require.NoError(err)
+	require.Equal(repo.defaultBranch, "development")
+	require.Equal(repo.taggerName, "test")
+	require.Equal(repo.taggerEmail, "test@test.com")
+}
+
+func setupRepo() (string, error) {
+	dir, err := ioutil.TempDir("", "provider-git")
+	if err != nil {
+		return "", err
+	}
+	repo, err := git.PlainInit(dir, false)
+	if err != nil {
+		return "", err
+	}
+	w, err := repo.Worktree()
+	if err != nil {
+		return "", err
+	}
+
+	author := &object.Signature{
+		Name:  "test",
+		Email: "test@test.com",
+		When:  time.Now(),
+	}
+	versionCount := 0
+	for i := 0; i < 100; i++ {
+		commit, err := w.Commit(fmt.Sprintf("feat: commit %d", i), &git.CommitOptions{Author: author})
+		if err != nil {
+			return "", err
+		}
+		if i%10 == 0 {
+			if _, err := repo.CreateTag(fmt.Sprintf("v1.%d.0", versionCount), commit, nil); err != nil {
+				return "", err
+			}
+			versionCount++
+		}
+	}
+
+	err = w.Checkout(&git.CheckoutOptions{
+		Branch: plumbing.NewBranchReferenceName("new-fix"),
+		Create: true,
+	})
+	if err != nil {
+		return "", err
+	}
+
+	if _, err = w.Commit("fix: error", &git.CommitOptions{Author: author}); err != nil {
+		return "", err
+	}
+	if err = w.Checkout(&git.CheckoutOptions{Branch: plumbing.NewBranchReferenceName("master")}); err != nil {
+		return "", err
+	}
+
+	return dir, nil
+}
+
+func createRepo() (*Repository, string, error) {
+	gitPath, err := setupRepo()
+	if err != nil {
+		return nil, "", err
+	}
+
+	repo := &Repository{}
+	err = repo.Init(map[string]string{
+		"git_path": gitPath,
+	})
+	if err != nil {
+		return nil, "", err
+	}
+
+	return repo, gitPath, nil
+}
+
+func TestGetInfo(t *testing.T) {
+	require := require.New(t)
+	repo, _, err := createRepo()
+	require.NoError(err)
+	repoInfo, err := repo.GetInfo()
+	require.NoError(err)
+	require.Equal("master", repoInfo.DefaultBranch)
+}
+
+func TestGetCommits(t *testing.T) {
+	require := require.New(t)
+	repo, _, err := createRepo()
+	require.NoError(err)
+	commits, err := repo.GetCommits("", "master")
+	require.NoError(err)
+	require.Len(commits, 100)
+
+	for _, c := range commits {
+		require.True(strings.HasPrefix(c.RawMessage, "feat: commit"))
+	}
+}
+
+func TestGithubCreateRelease(t *testing.T) {
+	require := require.New(t)
+	repo, gitPath, err := createRepo()
+	require.NoError(err)
+
+	gRepo, err := git.PlainOpen(gitPath)
+	require.NoError(err)
+	head, err := gRepo.Head()
+	require.NoError(err)
+
+	err = repo.CreateRelease(&provider.CreateReleaseConfig{
+		NewVersion: "2.0.0",
+		SHA:        head.Hash().String(),
+		Changelog:  "new feature",
+	})
+	require.NoError(err)
+
+	tagRef, err := gRepo.Tag("v2.0.0")
+	require.NoError(err)
+
+	tagObj, err := gRepo.TagObject(tagRef.Hash())
+	require.NoError(err)
+
+	require.Equal("new feature\n", tagObj.Message)
 }