diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts
index d92e59455077e3119d586500a4525e742e9bdf96..a8593e5622958a119e3749068e610fc440a8e970 100644
--- a/lib/util/git/index.ts
+++ b/lib/util/git/index.ts
@@ -242,6 +242,7 @@ export async function initRepo(args: StorageConfig): Promise<void> {
   config.ignoredAuthors = [];
   config.additionalBranches = [];
   config.branchIsModified = {};
+  config.commitBranches = {};
   const { localDir } = GlobalConfig.get();
   git = simpleGit(localDir, simpleGitConfig()).env({
     ...process.env,
@@ -587,13 +588,16 @@ export async function isBranchBehindBase(
   await syncGit();
   try {
     const { currentBranchSha, currentBranch } = config;
-    const branches = await git.branch([
-      '--remotes',
-      '--verbose',
-      '--contains',
-      config.currentBranchSha,
-    ]);
-    isBehind = !branches.all.map(localName).includes(branchName);
+    config.commitBranches[config.currentBranchSha] ??= (
+      await git.branch([
+        '--remotes',
+        '--verbose',
+        '--contains',
+        config.currentBranchSha,
+      ])
+    ).all.map(localName);
+    isBehind =
+      !config.commitBranches[config.currentBranchSha].includes(branchName);
     logger.debug(
       { currentBranch, currentBranchSha },
       `branch.isBehindBase(): ${isBehind}`
diff --git a/lib/util/git/types.ts b/lib/util/git/types.ts
index ef0e18e86c874428ec6166d50fbe84e559fbbaa7..bacf172951c0dc73776c17258431c9ee5deb5138 100644
--- a/lib/util/git/types.ts
+++ b/lib/util/git/types.ts
@@ -25,6 +25,7 @@ export interface LocalConfig extends StorageConfig {
   currentBranchSha: string;
   branchCommits: Record<string, CommitSha>;
   branchIsModified: Record<string, boolean>;
+  commitBranches: Record<string, string[]>;
   ignoredAuthors: string[];
   gitAuthorName?: string | null;
   gitAuthorEmail?: string;