diff --git a/lib/workers/repository/update/branch/automerge.spec.ts b/lib/workers/repository/update/branch/automerge.spec.ts
index ba707e461a6f2bd6ae694557a5df464486b08fe3..06e307a396d1fbd666ee49831b153784406b1e49 100644
--- a/lib/workers/repository/update/branch/automerge.spec.ts
+++ b/lib/workers/repository/update/branch/automerge.spec.ts
@@ -66,18 +66,28 @@ describe('workers/repository/update/branch/automerge', () => {
     it('returns false if automerge fails', async () => {
       config.automerge = true;
       config.automergeType = 'branch';
+      config.baseBranch = 'test-branch';
       platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
       git.mergeBranch.mockImplementationOnce(() => {
         throw new Error('merge error');
       });
-      expect(await tryBranchAutomerge(config)).toBe('failed');
+
+      const res = await tryBranchAutomerge(config);
+
+      expect(res).toBe('failed');
+      expect(git.checkoutBranch).toHaveBeenCalled();
     });
 
     it('returns true if automerge succeeds', async () => {
       config.automerge = true;
       config.automergeType = 'branch';
+      config.baseBranch = 'test-branch';
       platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
-      expect(await tryBranchAutomerge(config)).toBe('automerged');
+
+      const res = await tryBranchAutomerge(config);
+
+      expect(res).toBe('automerged');
+      expect(git.checkoutBranch).toHaveBeenCalledWith('test-branch');
     });
 
     it('returns true if automerge succeeds (dry-run)', async () => {
diff --git a/lib/workers/repository/update/branch/automerge.ts b/lib/workers/repository/update/branch/automerge.ts
index 9bbbc551e9aa89cb4fc30128469f82d39d7e2f91..99808bf23eb5da7b86f89768a9c078049e3902dd 100644
--- a/lib/workers/repository/update/branch/automerge.ts
+++ b/lib/workers/repository/update/branch/automerge.ts
@@ -4,7 +4,7 @@ import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
 import { platform } from '../../../../modules/platform';
 import { BranchStatus } from '../../../../types';
-import { mergeBranch } from '../../../../util/git';
+import { checkoutBranch, mergeBranch } from '../../../../util/git';
 import { isScheduledNow } from './schedule';
 import { resolveBranchStatus } from './status-checks';
 
@@ -43,6 +43,7 @@ export async function tryBranchAutomerge(
         // TODO: types (#7154)
         logger.info(`DRY-RUN: Would automerge branch ${config.branchName!}`);
       } else {
+        await checkoutBranch(config.baseBranch!);
         await mergeBranch(config.branchName!);
       }
       logger.info({ branch: config.branchName }, 'Branch automerged');