diff --git a/__test__/git-version.test.ts b/__test__/git-version.test.ts
index 9209add..27f702e 100644
--- a/__test__/git-version.test.ts
+++ b/__test__/git-version.test.ts
@@ -45,68 +45,42 @@ describe('git-version tests', () => {
   })
 
   it('sparse checkout', async () => {
-    expect(
-      new GitVersion('1.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeFalsy()
-    expect(
-      new GitVersion('1.99').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeFalsy()
-    expect(
-      new GitVersion('2.24').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeFalsy()
-    expect(
-      new GitVersion('2.24.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeFalsy()
-    expect(
-      new GitVersion('2.24.1').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeFalsy()
-    expect(
-      new GitVersion('2.24.9').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeFalsy()
-    expect(
-      new GitVersion('2.25').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.25.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.25.1').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.25.9').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.26').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.26.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.26.1').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.26.9').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('2.99').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('3.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('3.99').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('4.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('4.99').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('5.0').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
-    expect(
-      new GitVersion('5.99').checkMinimum(MinimumGitSparseCheckoutVersion)
-    ).toBeTruthy()
+    const minSparseVer = MinimumGitSparseCheckoutVersion
+    expect(new GitVersion('1.0').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('1.99').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.0').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.24').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.24.0').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.24.9').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.25').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.25.0').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.25.1').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.25.9').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.26').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.26.0').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.26.1').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.26.9').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.27').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.27.0').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.27.1').checkMinimum(minSparseVer)).toBeFalsy()
+    expect(new GitVersion('2.27.9').checkMinimum(minSparseVer)).toBeFalsy()
+    //                             /---------------------------------------
+    //         ^^^ before         /         after vvv
+    // --------------------------/
+    expect(new GitVersion('2.28').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.28.0').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.28.1').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.28.9').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.29').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.29.0').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.29.1').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.29.9').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('2.99').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('3.0').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('3.99').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('4.0').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('4.99').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('5.0').checkMinimum(minSparseVer)).toBeTruthy()
+    expect(new GitVersion('5.99').checkMinimum(minSparseVer)).toBeTruthy()
   })
 })
diff --git a/dist/index.js b/dist/index.js
index 347a5e3..35f6780 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -480,9 +480,9 @@ const retryHelper = __importStar(__nccwpck_require__(2155));
 const git_version_1 = __nccwpck_require__(3142);
 // Auth header not supported before 2.9
 // Wire protocol v2 not supported before 2.18
-// sparse-checkout not supported before 2.25
+// sparse-checkout not [well-]supported before 2.28 (see https://github.com/actions/checkout/issues/1386)
 exports.MinimumGitVersion = new git_version_1.GitVersion('2.18');
-exports.MinimumGitSparseCheckoutVersion = new git_version_1.GitVersion('2.25');
+exports.MinimumGitSparseCheckoutVersion = new git_version_1.GitVersion('2.28');
 function createCommandManager(workingDirectory, lfs, doSparseCheckout) {
     return __awaiter(this, void 0, void 0, function* () {
         return yield GitCommandManager.createCommandManager(workingDirectory, lfs, doSparseCheckout);
diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts
index 4ad49fd..fa50321 100644
--- a/src/git-command-manager.ts
+++ b/src/git-command-manager.ts
@@ -11,9 +11,9 @@ import {GitVersion} from './git-version'
 
 // Auth header not supported before 2.9
 // Wire protocol v2 not supported before 2.18
-// sparse-checkout not supported before 2.25
+// sparse-checkout not [well-]supported before 2.28 (see https://github.com/actions/checkout/issues/1386)
 export const MinimumGitVersion = new GitVersion('2.18')
-export const MinimumGitSparseCheckoutVersion = new GitVersion('2.25')
+export const MinimumGitSparseCheckoutVersion = new GitVersion('2.28')
 
 export interface IGitCommandManager {
   branchDelete(remote: boolean, branch: string): Promise<void>