diff --git a/lib/workers/branch/lock-files.js b/lib/workers/branch/lock-files.js
index f2f9e67757fbd3e4fbeaed06ae69ba3e6f4dabfc..441628a3389864c6753c423bfba9886f12c199e1 100644
--- a/lib/workers/branch/lock-files.js
+++ b/lib/workers/branch/lock-files.js
@@ -232,7 +232,12 @@ async function writeExistingFiles(config) {
     }
     if (packageFile.packageLock && config.type !== 'lockFileMaintenance') {
       logger.debug(`Writing package-lock.json to ${basedir}`);
-      const packageLock = await platform.getFile(packageFile.packageLock);
+      const existingPackageLock =
+        (await platform.branchExists(config.branchName)) &&
+        (await platform.getFile(packageFile.packageLock, config.branchName));
+      const packageLock =
+        existingPackageLock ||
+        (await platform.getFile(packageFile.packageLock));
       await fs.outputFile(
         upath.join(basedir, 'package-lock.json'),
         packageLock
@@ -242,7 +247,11 @@ async function writeExistingFiles(config) {
     }
     if (packageFile.yarnLock && config.type !== 'lockFileMaintenance') {
       logger.debug(`Writing yarn.lock to ${basedir}`);
-      const yarnLock = await platform.getFile(packageFile.yarnLock);
+      const existingYarnLock =
+        (await platform.branchExists(config.branchName)) &&
+        (await platform.getFile(packageFile.yarnLock, config.branchName));
+      const yarnLock =
+        existingYarnLock || (await platform.getFile(packageFile.yarnLock));
       await fs.outputFile(upath.join(basedir, 'yarn.lock'), yarnLock);
     } else {
       await fs.remove(upath.join(basedir, 'yarn.lock'));