diff --git a/lib/config/migration.js b/lib/config/migration.js
index e922f503b393ff832c3707dd0f10b4e34496dbe4..3d81881c16ced72b2b01a330972e42d7cffe1471 100644
--- a/lib/config/migration.js
+++ b/lib/config/migration.js
@@ -42,15 +42,23 @@ function migrateConfig(config, parentConfig) {
       if (val === 'none') {
         migratedConfig.automerge = false;
       }
-      if (val === 'patch' || val === 'minor') {
+      if (val === 'patch') {
         delete migratedConfig.automerge;
         migratedConfig.patch = migratedConfig.patch || {};
         migratedConfig.patch.automerge = true;
+        migratedConfig.minor = migratedConfig.minor || {};
+        migratedConfig.minor.automerge = false;
+        migratedConfig.major = migratedConfig.major || {};
+        migratedConfig.major.automerge = false;
       }
       if (val === 'minor') {
         delete migratedConfig.automerge;
+        migratedConfig.patch = migratedConfig.patch || {};
+        migratedConfig.patch.automerge = true;
         migratedConfig.minor = migratedConfig.minor || {};
         migratedConfig.minor.automerge = true;
+        migratedConfig.major = migratedConfig.major || {};
+        migratedConfig.major.automerge = false;
       }
       if (val === 'any') {
         migratedConfig.automerge = true;
diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap
index e18f201fc84889db5f75fa16f2f0ccb513cb4c38..beb03b78254af640ce26a8f1bac1e3f8fc92eedc 100644
--- a/test/config/__snapshots__/migration.spec.js.snap
+++ b/test/config/__snapshots__/migration.spec.js.snap
@@ -6,6 +6,9 @@ Object {
   "automerge": false,
   "commitMessage": "some commit message",
   "devDependencies": Object {
+    "major": Object {
+      "automerge": false,
+    },
     "minor": Object {
       "automerge": true,
     },
@@ -70,3 +73,31 @@ Object {
   },
 }
 `;
+
+exports[`config/migration migrateConfig(config, parentConfig) it overrides existing automerge setting 1`] = `
+Object {
+  "major": Object {
+    "automerge": false,
+  },
+  "minor": Object {
+    "automerge": true,
+  },
+  "packageRules": Array [
+    Object {
+      "major": Object {
+        "automerge": false,
+      },
+      "minor": Object {
+        "automerge": false,
+      },
+      "packagePatterns": "^(@angular|typescript)",
+      "patch": Object {
+        "automerge": true,
+      },
+    },
+  ],
+  "patch": Object {
+    "automerge": true,
+  },
+}
+`;
diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js
index 97c155f819763723e0480b9636283107f3193608..17b71fb3a447128b627105652190aed82711e285 100644
--- a/test/config/migration.spec.js
+++ b/test/config/migration.spec.js
@@ -72,6 +72,25 @@ describe('config/migration', () => {
       expect(isMigrated).toBe(true);
       expect(migratedConfig).toMatchSnapshot();
     });
+    it('it overrides existing automerge setting', () => {
+      const config = {
+        automerge: 'minor',
+        packages: [
+          {
+            packagePatterns: '^(@angular|typescript)',
+            automerge: 'patch',
+          },
+        ],
+      };
+      const parentConfig = { ...defaultConfig };
+      const { isMigrated, migratedConfig } = configMigration.migrateConfig(
+        config,
+        parentConfig
+      );
+      expect(isMigrated).toBe(true);
+      expect(migratedConfig).toMatchSnapshot();
+      expect(migratedConfig.packageRules[0].minor.automerge).toBe(false);
+    });
     it('it does not migrate config', () => {
       const config = {
         enabled: true,