diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
index 7879af9..217f587 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/MidxPackListTest.java
@@ -44,7 +44,7 @@ public void getAllPlainPacks_onlyMidx() {
 		DfsPackFileMidx midx = packPool.midx("midx", null, "a", "b", "c");
 
 		MidxPackList packList = MidxPackList.create(midx);
-		assertEquals(List.of(a, b, c), packList.getAllPlainPacks());
+		assertEquals(List.of(c, b, a), packList.getAllPlainPacks());
 	}
 
 	@Test
@@ -56,7 +56,7 @@ public void getAllPlainPacks_midxPlusOne() {
 		DfsPackFile d = packPool.pack("d");
 
 		MidxPackList packList = MidxPackList.create(d, midx);
-		assertEquals(List.of(d, a, b, c), packList.getAllPlainPacks());
+		assertEquals(List.of(d, c, b, a), packList.getAllPlainPacks());
 	}
 
 	@Test
@@ -74,7 +74,7 @@ public void getAllPlainPacks_nestedMidx() {
 				"f");
 
 		MidxPackList packList = MidxPackList.create(midxTip);
-		assertEquals(List.of(e, f, c, d, a, b), packList.getAllPlainPacks());
+		assertEquals(List.of(f, e, d, c, b, a), packList.getAllPlainPacks());
 	}
 
 	@Test
@@ -304,9 +304,9 @@ public void getPlainPacksNotCoveredBy_midxChain() {
 				"f");
 
 		MidxPackList packList = MidxPackList.create(midxTip);
-		assertEquals(List.of(e, f, c, d),
+		assertEquals(List.of(f, e, d, c),
 				packList.getPlainPacksNotCoveredBy(midxBase));
-		assertEquals(List.of(e, f),
+		assertEquals(List.of(f, e),
 				packList.getPlainPacksNotCoveredBy(midxMiddle));
 		assertEquals(List.of(), packList.getPlainPacksNotCoveredBy(midxTip));
 	}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
index a6c2b76..70c9b85 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/MidxPackList.java
@@ -53,6 +53,11 @@ private MidxPackList(List<DfsPackFile> packs) {
 
 	/**
 	 * Get all plain packs in the list, either top-level or inside midxs
+	 * <p>
+	 * Inside midx, the packs are in reverse lookup order. This code restores
+	 * their original order. i.e. the list with packs [INSERT, midx(COMPACT-2,
+	 * COMPACT-3), midx(GC, COMPACT-1)] becomes [INSERT, COMPACT-3, COMPACT-2,
+	 * COMPACT-1, GC].
 	 *
 	 * @return a list of all "real" packs in this pack list, either top level or
 	 *         inside midxs.
@@ -63,7 +68,11 @@ public List<DfsPackFile> getAllPlainPacks() {
 		while (!pending.isEmpty()) {
 			DfsPackFile pack = pending.poll();
 			if (pack instanceof DfsPackFileMidx midxPack) {
-				plainPacks.addAll(midxPack.getCoveredPacks());
+				// Midx order is the reverse of object lookup order
+				ArrayList<DfsPackFile> coveredPacks = new ArrayList<>(
+						midxPack.getCoveredPacks());
+				Collections.reverse(coveredPacks);
+				plainPacks.addAll(coveredPacks);
 				if (midxPack.getMultipackIndexBase() != null) {
 					pending.add(midxPack.getMultipackIndexBase());
 				}
