diff --git a/models/git/branch.go b/models/git/branch.go
index adf8b0a78d2..255b230b515 100644
--- a/models/git/branch.go
+++ b/models/git/branch.go
@@ -11,6 +11,7 @@ import (
 	"code.gitea.io/gitea/models/db"
 	repo_model "code.gitea.io/gitea/models/repo"
 	user_model "code.gitea.io/gitea/models/user"
+	"code.gitea.io/gitea/modules/git"
 	"code.gitea.io/gitea/modules/log"
 	"code.gitea.io/gitea/modules/timeutil"
 	"code.gitea.io/gitea/modules/util"
@@ -204,14 +205,14 @@ func DeleteBranches(ctx context.Context, repoID, doerID int64, branchIDs []int64
 
 // UpdateBranch updates the branch information in the database. If the branch exist, it will update latest commit of this branch information
 // If it doest not exist, insert a new record into database
-func UpdateBranch(ctx context.Context, repoID int64, branchName, commitID, commitMessage string, pusherID int64, commitTime time.Time) error {
+func UpdateBranch(ctx context.Context, repoID, pusherID int64, branchName string, commit *git.Commit) error {
 	cnt, err := db.GetEngine(ctx).Where("repo_id=? AND name=?", repoID, branchName).
 		Cols("commit_id, commit_message, pusher_id, commit_time, is_deleted, updated_unix").
 		Update(&Branch{
-			CommitID:      commitID,
-			CommitMessage: commitMessage,
+			CommitID:      commit.ID.String(),
+			CommitMessage: commit.Summary(),
 			PusherID:      pusherID,
-			CommitTime:    timeutil.TimeStamp(commitTime.Unix()),
+			CommitTime:    timeutil.TimeStamp(commit.Committer.When.Unix()),
 			IsDeleted:     false,
 		})
 	if err != nil {
@@ -224,10 +225,10 @@ func UpdateBranch(ctx context.Context, repoID int64, branchName, commitID, commi
 	return db.Insert(ctx, &Branch{
 		RepoID:        repoID,
 		Name:          branchName,
-		CommitID:      commitID,
-		CommitMessage: commitMessage,
+		CommitID:      commit.ID.String(),
+		CommitMessage: commit.Summary(),
 		PusherID:      pusherID,
-		CommitTime:    timeutil.TimeStamp(commitTime.Unix()),
+		CommitTime:    timeutil.TimeStamp(commit.Committer.When.Unix()),
 	})
 }
 
diff --git a/models/git/branch_test.go b/models/git/branch_test.go
index bb63660d078..ba690269279 100644
--- a/models/git/branch_test.go
+++ b/models/git/branch_test.go
@@ -11,6 +11,7 @@ import (
 	issues_model "code.gitea.io/gitea/models/issues"
 	repo_model "code.gitea.io/gitea/models/repo"
 	"code.gitea.io/gitea/models/unittest"
+	"code.gitea.io/gitea/modules/git"
 	"code.gitea.io/gitea/modules/util"
 
 	"github.com/stretchr/testify/assert"
@@ -28,7 +29,15 @@ func TestAddDeletedBranch(t *testing.T) {
 	secondBranch := unittest.AssertExistsAndLoadBean(t, &git_model.Branch{RepoID: repo.ID, Name: "branch2"})
 	assert.True(t, secondBranch.IsDeleted)
 
-	err := git_model.UpdateBranch(db.DefaultContext, repo.ID, secondBranch.Name, secondBranch.CommitID, secondBranch.CommitMessage, secondBranch.PusherID, secondBranch.CommitTime.AsLocalTime())
+	commit := &git.Commit{
+		ID:            git.MustIDFromString(secondBranch.CommitID),
+		CommitMessage: secondBranch.CommitMessage,
+		Committer: &git.Signature{
+			When: secondBranch.CommitTime.AsLocalTime(),
+		},
+	}
+
+	err := git_model.UpdateBranch(db.DefaultContext, repo.ID, secondBranch.PusherID, secondBranch.Name, commit)
 	assert.NoError(t, err)
 }
 
diff --git a/modules/repository/branch.go b/modules/repository/branch.go
index 7fd29e3f7d0..bffadd62f4d 100644
--- a/modules/repository/branch.go
+++ b/modules/repository/branch.go
@@ -77,9 +77,9 @@ func SyncRepoBranchesWithRepo(ctx context.Context, repo *repo_model.Repository,
 				RepoID:        repo.ID,
 				Name:          branch,
 				CommitID:      commit.ID.String(),
-				CommitMessage: commit.CommitMessage,
+				CommitMessage: commit.Summary(),
 				PusherID:      doerID,
-				CommitTime:    timeutil.TimeStamp(commit.Author.When.Unix()),
+				CommitTime:    timeutil.TimeStamp(commit.Committer.When.Unix()),
 			})
 		} else if commit.ID.String() != dbb.CommitID {
 			toUpdate = append(toUpdate, &git_model.Branch{
@@ -87,9 +87,9 @@ func SyncRepoBranchesWithRepo(ctx context.Context, repo *repo_model.Repository,
 				RepoID:        repo.ID,
 				Name:          branch,
 				CommitID:      commit.ID.String(),
-				CommitMessage: commit.CommitMessage,
+				CommitMessage: commit.Summary(),
 				PusherID:      doerID,
-				CommitTime:    timeutil.TimeStamp(commit.Author.When.Unix()),
+				CommitTime:    timeutil.TimeStamp(commit.Committer.When.Unix()),
 			})
 		}
 	}
diff --git a/services/repository/push.go b/services/repository/push.go
index 7e7069f580b..8e4bab15629 100644
--- a/services/repository/push.go
+++ b/services/repository/push.go
@@ -259,7 +259,7 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error {
 
 				notification.NotifyPushCommits(ctx, pusher, repo, opts, commits)
 
-				if err = git_model.UpdateBranch(ctx, repo.ID, branch, newCommit.ID.String(), newCommit.CommitMessage, opts.PusherID, newCommit.Committer.When); err != nil {
+				if err = git_model.UpdateBranch(ctx, repo.ID, opts.PusherID, branch, newCommit); err != nil {
 					return fmt.Errorf("git_model.UpdateBranch %s:%s failed: %v", repo.FullName(), branch, err)
 				}