diff --git a/README.md b/README.md
index 90eef49..bc2552b 100644
--- a/README.md
+++ b/README.md
@@ -93,9 +93,10 @@ Refer [here](https://github.com/actions/checkout/blob/v1/README.md) for previous
     # Default: 1
     fetch-depth: ''
 
-    # Number of fetches to perform simultaneously when updating submodules. 0
-    # indicates default (serial updates).
-    # Default: 0
+    # Number of fetches to perform simultaneously when updating submodules: -1
+    # indicates to use git default (serial updates). 0 uses as many jobs as there are
+    # processors.
+    # Default: -1
     fetch-jobs: ''
 
     # Whether to download Git-LFS files
diff --git a/__test__/git-auth-helper.test.ts b/__test__/git-auth-helper.test.ts
index 889e2b6..6ac3f12 100644
--- a/__test__/git-auth-helper.test.ts
+++ b/__test__/git-auth-helper.test.ts
@@ -760,7 +760,7 @@ async function setup(testName: string): Promise<void> {
     clean: true,
     commit: '',
     fetchDepth: 1,
-    fetchJobs: 0,
+    fetchJobs: -1,
     lfs: false,
     submodules: false,
     nestedSubmodules: false,
diff --git a/__test__/input-helper.test.ts b/__test__/input-helper.test.ts
index d9da8b9..b6146f8 100644
--- a/__test__/input-helper.test.ts
+++ b/__test__/input-helper.test.ts
@@ -75,7 +75,7 @@ describe('input-helper tests', () => {
     expect(settings.commit).toBeTruthy()
     expect(settings.commit).toBe('1234567890123456789012345678901234567890')
     expect(settings.fetchDepth).toBe(1)
-    expect(settings.fetchJobs).toBe(0)
+    expect(settings.fetchJobs).toBe(-1)
     expect(settings.lfs).toBe(false)
     expect(settings.ref).toBe('refs/heads/some-ref')
     expect(settings.repositoryName).toBe('some-repo')
diff --git a/action.yml b/action.yml
index 1abd5c8..d4433d2 100644
--- a/action.yml
+++ b/action.yml
@@ -57,8 +57,11 @@ inputs:
     description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
     default: 1
   fetch-jobs:
-    description: 'Number of fetches to perform simultaneously when updating submodules. 0 indicates default (serial updates).'
-    default: 0
+    description: >
+      Number of fetches to perform simultaneously when updating submodules:
+      -1 indicates to use git default (serial updates). 0 uses as many jobs as
+      there are processors.
+    default: -1
   lfs:
     description: 'Whether to download Git-LFS files'
     default: false
diff --git a/dist/index.js b/dist/index.js
index 2faf9a2..d77981a 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -5949,7 +5949,7 @@ class GitCommandManager {
             if (recursive) {
                 args.push('--recursive');
             }
-            if (fetchJobs > 0) {
+            if (fetchJobs > -1) {
                 args.push(`--jobs=${fetchJobs}`);
             }
             yield this.execGit(args);
@@ -14571,9 +14571,9 @@ function getInputs() {
     }
     core.debug(`fetch depth = ${result.fetchDepth}`);
     // Fetch jobs
-    result.fetchJobs = Math.floor(Number(core.getInput('fetch-jobs') || '0'));
-    if (isNaN(result.fetchJobs) || result.fetchJobs < 0) {
-        result.fetchJobs = 0;
+    result.fetchJobs = Math.floor(Number(core.getInput('fetch-jobs') || '-1'));
+    if (isNaN(result.fetchJobs) || result.fetchJobs < -1) {
+        result.fetchJobs = -1;
     }
     core.debug(`fetch jobs = ${result.fetchJobs}`);
     // LFS
diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts
index 92dc3f3..6ef3bec 100644
--- a/src/git-command-manager.ts
+++ b/src/git-command-manager.ts
@@ -327,7 +327,7 @@ class GitCommandManager {
       args.push('--recursive')
     }
 
-    if (fetchJobs > 0) {
+    if (fetchJobs > -1) {
       args.push(`--jobs=${fetchJobs}`)
     }
 
diff --git a/src/input-helper.ts b/src/input-helper.ts
index 8767899..8a3f79b 100644
--- a/src/input-helper.ts
+++ b/src/input-helper.ts
@@ -89,9 +89,9 @@ export function getInputs(): IGitSourceSettings {
   core.debug(`fetch depth = ${result.fetchDepth}`)
 
   // Fetch jobs
-  result.fetchJobs = Math.floor(Number(core.getInput('fetch-jobs') || '0'))
-  if (isNaN(result.fetchJobs) || result.fetchJobs < 0) {
-    result.fetchJobs = 0
+  result.fetchJobs = Math.floor(Number(core.getInput('fetch-jobs') || '-1'))
+  if (isNaN(result.fetchJobs) || result.fetchJobs < -1) {
+    result.fetchJobs = -1
   }
   core.debug(`fetch jobs = ${result.fetchJobs}`)