diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go
index 4c1670742c..cc02e551ba 100644
--- a/modules/git/repo_commit_nogogit.go
+++ b/modules/git/repo_commit_nogogit.go
@@ -103,9 +103,8 @@ func (repo *Repository) getCommitFromBatchReader(rd *bufio.Reader, id SHA1) (*Co
 		if err != nil {
 			return nil, err
 		}
-		tag.repo = repo
 
-		commit, err := tag.Commit()
+		commit, err := tag.Commit(repo)
 		if err != nil {
 			return nil, err
 		}
diff --git a/modules/git/repo_tag.go b/modules/git/repo_tag.go
index 4262e0804f..6b5dbeef48 100644
--- a/modules/git/repo_tag.go
+++ b/modules/git/repo_tag.go
@@ -72,7 +72,6 @@ func (repo *Repository) getTag(tagID SHA1, name string) (*Tag, error) {
 			Type:    tp,
 			Tagger:  commit.Committer,
 			Message: commit.Message(),
-			repo:    repo,
 		}
 
 		repo.tagCache.Set(tagID.String(), tag)
@@ -92,7 +91,6 @@ func (repo *Repository) getTag(tagID SHA1, name string) (*Tag, error) {
 
 	tag.Name = name
 	tag.ID = tagID
-	tag.repo = repo
 	tag.Type = tp
 
 	repo.tagCache.Set(tagID.String(), tag)
diff --git a/modules/git/repo_tag_test.go b/modules/git/repo_tag_test.go
index 33d34743f8..f4d6726ea1 100644
--- a/modules/git/repo_tag_test.go
+++ b/modules/git/repo_tag_test.go
@@ -55,7 +55,6 @@ func TestRepository_GetTag(t *testing.T) {
 	if lTag == nil {
 		assert.FailNow(t, "nil lTag: %s", lTagName)
 	}
-	lTag.repo = nil
 	assert.EqualValues(t, lTagName, lTag.Name)
 	assert.EqualValues(t, lTagCommitID, lTag.ID.String())
 	assert.EqualValues(t, lTagCommitID, lTag.Object.String())
diff --git a/modules/git/repo_tree_nogogit.go b/modules/git/repo_tree_nogogit.go
index 56a4a732e0..00009c997d 100644
--- a/modules/git/repo_tree_nogogit.go
+++ b/modules/git/repo_tree_nogogit.go
@@ -34,7 +34,7 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) {
 		if err != nil {
 			return nil, err
 		}
-		commit, err := tag.Commit()
+		commit, err := tag.Commit(repo)
 		if err != nil {
 			return nil, err
 		}
diff --git a/modules/git/tag.go b/modules/git/tag.go
index 23f09e25b6..71dd866a18 100644
--- a/modules/git/tag.go
+++ b/modules/git/tag.go
@@ -17,7 +17,6 @@ const endpgp = "\n-----END PGP SIGNATURE-----"
 type Tag struct {
 	Name      string
 	ID        SHA1
-	repo      *Repository
 	Object    SHA1 // The id of this commit object
 	Type      string
 	Tagger    *Signature
@@ -26,8 +25,8 @@ type Tag struct {
 }
 
 // Commit return the commit of the tag reference
-func (tag *Tag) Commit() (*Commit, error) {
-	return tag.repo.getCommit(tag.Object)
+func (tag *Tag) Commit(gitRepo *Repository) (*Commit, error) {
+	return gitRepo.getCommit(tag.Object)
 }
 
 // Parse commit information from the (uncompressed) raw
diff --git a/modules/git/tag_test.go b/modules/git/tag_test.go
index 3aa49df4b2..e5f1660b8e 100644
--- a/modules/git/tag_test.go
+++ b/modules/git/tag_test.go
@@ -24,7 +24,6 @@ tagger Lucas Michot <lucas@semalead.com> 1484491741 +0100
 `), tag: Tag{
 			Name:      "",
 			ID:        SHA1{},
-			repo:      nil,
 			Object:    SHA1{0x3b, 0x11, 0x4a, 0xb8, 0x0, 0xc6, 0x43, 0x2a, 0xd4, 0x23, 0x87, 0xcc, 0xf6, 0xbc, 0x8d, 0x43, 0x88, 0xa2, 0x88, 0x5a},
 			Type:      "commit",
 			Tagger:    &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484491741, 0)},
@@ -42,7 +41,6 @@ o
 ono`), tag: Tag{
 			Name:      "",
 			ID:        SHA1{},
-			repo:      nil,
 			Object:    SHA1{0x7c, 0xdf, 0x42, 0xc0, 0xb1, 0xcc, 0x76, 0x3a, 0xb7, 0xe4, 0xc3, 0x3c, 0x47, 0xa2, 0x4e, 0x27, 0xc6, 0x6b, 0xfc, 0xcc},
 			Type:      "commit",
 			Tagger:    &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484553735, 0)},
diff --git a/modules/repository/repo.go b/modules/repository/repo.go
index d04cd28a59..eb3f58e937 100644
--- a/modules/repository/repo.go
+++ b/modules/repository/repo.go
@@ -296,7 +296,7 @@ func PushUpdateAddTag(repo *repo_model.Repository, gitRepo *git.Repository, tagN
 	if err != nil {
 		return fmt.Errorf("GetTag: %v", err)
 	}
-	commit, err := tag.Commit()
+	commit, err := tag.Commit(gitRepo)
 	if err != nil {
 		return fmt.Errorf("Commit: %v", err)
 	}
diff --git a/routers/api/v1/repo/tag.go b/routers/api/v1/repo/tag.go
index 8d42e63a48..13a625bafb 100644
--- a/routers/api/v1/repo/tag.go
+++ b/routers/api/v1/repo/tag.go
@@ -103,7 +103,7 @@ func GetAnnotatedTag(ctx *context.APIContext) {
 	if tag, err := ctx.Repo.GitRepo.GetAnnotatedTag(sha); err != nil {
 		ctx.Error(http.StatusBadRequest, "GetAnnotatedTag", err)
 	} else {
-		commit, err := tag.Commit()
+		commit, err := tag.Commit(ctx.Repo.GitRepo)
 		if err != nil {
 			ctx.Error(http.StatusBadRequest, "GetAnnotatedTag", err)
 		}
diff --git a/services/repository/push.go b/services/repository/push.go
index fe3f32f839..11854ccb39 100644
--- a/services/repository/push.go
+++ b/services/repository/push.go
@@ -294,7 +294,7 @@ func pushUpdateAddTags(ctx context.Context, repo *repo_model.Repository, gitRepo
 		if err != nil {
 			return fmt.Errorf("GetTag: %v", err)
 		}
-		commit, err := tag.Commit()
+		commit, err := tag.Commit(gitRepo)
 		if err != nil {
 			return fmt.Errorf("Commit: %v", err)
 		}