diff --git a/t/t3431-rebase-fork-point.sh b/t/t3431-rebase-fork-point.sh
index 0bb284d61d..7b9c135c6e 100755
--- a/t/t3431-rebase-fork-point.sh
+++ b/t/t3431-rebase-fork-point.sh
@@ -74,7 +74,7 @@ test_rebase 'G F C D B A' --onto D main
 test_rebase 'G F C B A' --keep-base refs/heads/main
 test_rebase 'G F C B A' --keep-base main
 
-test_expect_success 'git rebase --fork-point with ambigous refname' '
+test_expect_success 'git rebase --fork-point with ambiguous refname' '
 	git checkout main &&
 	git checkout -b one &&
 	git checkout side &&
diff --git a/t/t3504-cherry-pick-rerere.sh b/t/t3504-cherry-pick-rerere.sh
index 597c98e9c5..109016eba9 100755
--- a/t/t3504-cherry-pick-rerere.sh
+++ b/t/t3504-cherry-pick-rerere.sh
@@ -43,7 +43,7 @@ test_expect_success 'cherry-pick conflict with --rerere-autoupdate' '
 	git reset --hard bar-dev
 '
 
-test_expect_success 'cherry-pick conflict repsects rerere.autoUpdate' '
+test_expect_success 'cherry-pick conflict respects rerere.autoUpdate' '
 	test_config rerere.autoUpdate true &&
 	test_must_fail git cherry-pick foo..bar-main &&
 	test_cmp foo-expect foo &&
diff --git a/t/t3920-crlf-messages.sh b/t/t3920-crlf-messages.sh
index 50ae222f08..31877f00c7 100755
--- a/t/t3920-crlf-messages.sh
+++ b/t/t3920-crlf-messages.sh
@@ -82,7 +82,7 @@ test_crlf_subject_body_and_contents() {
 
 
 test_expect_success 'Setup refs with commit and tag messages using CRLF' '
-	test_commit inital &&
+	test_commit initial &&
 	create_crlf_refs
 '
 
diff --git a/t/t5303-pack-corruption-resilience.sh b/t/t5303-pack-corruption-resilience.sh
index e6a43ec9ae..b634bfb665 100755
--- a/t/t5303-pack-corruption-resilience.sh
+++ b/t/t5303-pack-corruption-resilience.sh
@@ -15,7 +15,7 @@ TEST_PASSES_SANITIZE_LEAK=true
 # 1) blob_2 is a delta with blob_1 for base and blob_3 is a delta with blob2
 #    for base, such that blob_3 delta depth is 2;
 #
-# 2) the bulk of object data is uncompressible so the text part remains
+# 2) the bulk of object data is incompressible so the text part remains
 #    visible;
 #
 # 3) object header is always 2 bytes.
diff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh
index 77e91547ea..1193726daa 100755
--- a/t/t5324-split-commit-graph.sh
+++ b/t/t5324-split-commit-graph.sh
@@ -203,7 +203,7 @@ then
 	graph_git_behavior 'alternate: commit 13 vs 6' commits/13 origin/commits/6 "fork"
 fi
 
-test_expect_success 'test merge stragety constants' '
+test_expect_success 'test merge strategy constants' '
 	git clone . merge-2 &&
 	(
 		cd merge-2 &&
diff --git a/t/t5329-pack-objects-cruft.sh b/t/t5329-pack-objects-cruft.sh
index 445739d06c..54a4a49997 100755
--- a/t/t5329-pack-objects-cruft.sh
+++ b/t/t5329-pack-objects-cruft.sh
@@ -690,7 +690,7 @@ test_expect_success 'cruft --local drops unreachable objects' '
 	test_when_finished "rm -fr alternate repo" &&
 
 	test_commit -C alternate base &&
-	# Pack all objects in alterate so that the cruft repack in "repo" sees
+	# Pack all objects in alternate so that the cruft repack in "repo" sees
 	# the object it dropped due to `--local` as packed. Otherwise this
 	# object would not appear packed anywhere (since it is not packed in
 	# alternate and likewise not part of the cruft pack in the other repo
diff --git a/t/t5411/test-0034-report-ft.sh b/t/t5411/test-0034-report-ft.sh
index 0e37535065..78d0b63876 100644
--- a/t/t5411/test-0034-report-ft.sh
+++ b/t/t5411/test-0034-report-ft.sh
@@ -10,7 +10,7 @@ test_expect_success "setup proc-receive hook (ft, $PROTOCOL)" '
 # Refs of upstream : main(A)
 # Refs of workbench: main(A)  tags/v123
 # git push         :                       refs/for/main/topic(B)
-test_expect_success "proc-receive: fall throught, let receive-pack to execute ($PROTOCOL)" '
+test_expect_success "proc-receive: fall through, let receive-pack to execute ($PROTOCOL)" '
 	git -C workbench push origin \
 		$B:refs/for/main/topic \
 		>out 2>&1 &&
diff --git a/t/t5411/test-0035-report-ft--porcelain.sh b/t/t5411/test-0035-report-ft--porcelain.sh
index b9a05181f1..df5fc212be 100644
--- a/t/t5411/test-0035-report-ft--porcelain.sh
+++ b/t/t5411/test-0035-report-ft--porcelain.sh
@@ -10,7 +10,7 @@ test_expect_success "setup proc-receive hook (fall-through, $PROTOCOL/porcelain)
 # Refs of upstream : main(A)
 # Refs of workbench: main(A)  tags/v123
 # git push         :                       refs/for/main/topic(B)
-test_expect_success "proc-receive: fall throught, let receive-pack to execute ($PROTOCOL/porcelain)" '
+test_expect_success "proc-receive: fall through, let receive-pack to execute ($PROTOCOL/porcelain)" '
 	git -C workbench push --porcelain origin \
 		$B:refs/for/main/topic \
 		>out 2>&1 &&
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index 605f17240c..bd08187d1b 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -418,7 +418,7 @@ test_expect_success 'in_vain not triggered before first ACK' '
 	test_grep "remote: Total 3 " log
 '
 
-test_expect_success 'in_vain resetted upon ACK' '
+test_expect_success 'in_vain reset upon ACK' '
 	test_when_finished rm -f log trace2 &&
 	rm -rf myserver myclient &&
 	git init myserver &&
diff --git a/t/t5528-push-default.sh b/t/t5528-push-default.sh
index bc2bada34c..aecd03d69f 100755
--- a/t/t5528-push-default.sh
+++ b/t/t5528-push-default.sh
@@ -147,7 +147,7 @@ test_expect_success 'push from/to new branch fails with upstream and simple ' '
 #  - the default push succeeds
 #
 # A previous test expected this to fail, but for the wrong reasons:
-# it expected a fail becaause the branch is new and cannot be pushed, but
+# it expected a fail because the branch is new and cannot be pushed, but
 # in fact it was failing because of an ambiguous remote
 #
 test_expect_failure 'push from/to new branch fails with matching ' '
diff --git a/t/t5531-deep-submodule-push.sh b/t/t5531-deep-submodule-push.sh
index 135823630a..dcfef67af4 100755
--- a/t/t5531-deep-submodule-push.sh
+++ b/t/t5531-deep-submodule-push.sh
@@ -204,7 +204,7 @@ test_expect_success 'push recurse-submodules last one wins on command line' '
 		cd work/gar/bage &&
 		>recurse-check-on-command-line-overriding-earlier-command-line &&
 		git add recurse-check-on-command-line-overriding-earlier-command-line &&
-		git commit -m "Recurse on command-line overridiing earlier command-line junk"
+		git commit -m "Recurse on command-line overriding earlier command-line junk"
 	) &&
 	(
 		cd work &&
diff --git a/t/t5558-clone-bundle-uri.sh b/t/t5558-clone-bundle-uri.sh
index cd05321e17..3816ed5058 100755
--- a/t/t5558-clone-bundle-uri.sh
+++ b/t/t5558-clone-bundle-uri.sh
@@ -945,7 +945,7 @@ test_expect_success 'creationToken heuristic with failed downloads (clone)' '
 		--bundle-uri="$HTTPD_URL/bundle-list" \
 		"$HTTPD_URL/smart/fetch.git" download-3 &&
 
-	# As long as we have continguous successful downloads,
+	# As long as we have contiguous successful downloads,
 	# we _do_ set these configs.
 	test_cmp_config -C download-3 "$HTTPD_URL/bundle-list" fetch.bundleuri &&
 	test_cmp_config -C download-3 3 fetch.bundlecreationtoken &&
@@ -1189,7 +1189,7 @@ test_expect_success 'creationToken heuristic with failed downloads (fetch)' '
 	GIT_TRACE2_EVENT="$(pwd)/trace-fetch-3.txt" \
 		git -C fetch-3 fetch origin &&
 
-	# As long as we have continguous successful downloads,
+	# As long as we have contiguous successful downloads,
 	# we _do_ set the maximum creation token.
 	test_cmp_config -C fetch-3 6 fetch.bundlecreationtoken &&
 
diff --git a/t/t6200-fmt-merge-msg.sh b/t/t6200-fmt-merge-msg.sh
index ac57b0e4ae..0a4388f343 100755
--- a/t/t6200-fmt-merge-msg.sh
+++ b/t/t6200-fmt-merge-msg.sh
@@ -608,34 +608,34 @@ test_expect_success 'merge-msg with "merging" an annotated tag' '
 
 	git checkout main^0 &&
 	git commit --allow-empty -m "One step ahead" &&
-	git tag -a -m "An annotated one" annote HEAD &&
+	git tag -a -m "An annotated one" annotate HEAD &&
 
 	git checkout main &&
-	git fetch . annote &&
+	git fetch . annotate &&
 
 	git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 	{
 		cat <<-\EOF
-		Merge tag '\''annote'\''
+		Merge tag '\''annotate'\''
 
 		An annotated one
 
-		* tag '\''annote'\'':
+		* tag '\''annotate'\'':
 		  One step ahead
 		EOF
 	} >expected &&
 	test_cmp expected actual &&
 
 	test_when_finished "git reset --hard" &&
-	annote=$(git rev-parse annote) &&
-	git merge --no-commit --no-ff $annote &&
+	annotate=$(git rev-parse annotate) &&
+	git merge --no-commit --no-ff $annotate &&
 	{
 		cat <<-EOF
-		Merge tag '\''$annote'\''
+		Merge tag '\''$annotate'\''
 
 		An annotated one
 
-		* tag '\''$annote'\'':
+		* tag '\''$annotate'\'':
 		  One step ahead
 		EOF
 	} >expected &&
diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh
index b3163629c5..c39d4e7e9c 100755
--- a/t/t6300-for-each-ref.sh
+++ b/t/t6300-for-each-ref.sh
@@ -770,7 +770,7 @@ test_expect_success 'describe:abbrev=... vs describe --abbrev=...' '
 			refs/heads/master >actual &&
 		test_cmp expect actual &&
 
-		# Make sure the hash used is atleast 14 digits long
+		# Make sure the hash used is at least 14 digits long
 		sed -e "s/^.*-g\([0-9a-f]*\)$/\1/" <actual >hexpart &&
 		test 15 -le $(wc -c <hexpart) &&
 
diff --git a/t/t6302-for-each-ref-filter.sh b/t/t6302-for-each-ref-filter.sh
index 7f44d3c3f2..a3e1258a4c 100755
--- a/t/t6302-for-each-ref-filter.sh
+++ b/t/t6302-for-each-ref-filter.sh
@@ -14,7 +14,7 @@ test_expect_success 'setup some history and refs' '
 	git checkout -b side &&
 	test_commit four &&
 	git tag -m "An annotated tag" annotated-tag &&
-	git tag -m "Annonated doubly" doubly-annotated-tag annotated-tag &&
+	git tag -m "Annotated doubly" doubly-annotated-tag annotated-tag &&
 
 	# Note that these "signed" tags might not actually be signed.
 	# Tests which care about the distinction should be marked
@@ -343,7 +343,7 @@ test_expect_success 'check `%(contents:lines=1)`' '
 	side |four
 	odd/spot |three
 	annotated-tag |An annotated tag
-	doubly-annotated-tag |Annonated doubly
+	doubly-annotated-tag |Annotated doubly
 	doubly-signed-tag |Signed doubly
 	four |four
 	one |one
@@ -379,7 +379,7 @@ test_expect_success 'check `%(contents:lines=99999)`' '
 	side |four
 	odd/spot |three
 	annotated-tag |An annotated tag
-	doubly-annotated-tag |Annonated doubly
+	doubly-annotated-tag |Annotated doubly
 	doubly-signed-tag |Signed doubly
 	four |four
 	one |one
diff --git a/t/t6404-recursive-merge.sh b/t/t6404-recursive-merge.sh
index 36215518b6..57169ca24b 100755
--- a/t/t6404-recursive-merge.sh
+++ b/t/t6404-recursive-merge.sh
@@ -88,7 +88,7 @@ test_expect_success 'result contains a conflict' '
 '
 
 test_expect_success 'virtual trees were processed' '
-	# TODO: fragile test, relies on ambigious merge-base resolution
+	# TODO: fragile test, relies on ambiguous merge-base resolution
 	git ls-files --stage >out &&
 
 	cat >expect <<-EOF &&
diff --git a/t/t6439-merge-co-error-msgs.sh b/t/t6439-merge-co-error-msgs.sh
index 0cbec57cda..a9804ae42f 100755
--- a/t/t6439-merge-co-error-msgs.sh
+++ b/t/t6439-merge-co-error-msgs.sh
@@ -65,7 +65,7 @@ Please move or remove them before you merge.
 Aborting
 EOF
 
-test_expect_success 'untracked files or local changes ovewritten by merge' '
+test_expect_success 'untracked files or local changes overwritten by merge' '
 	git add two &&
 	git add three &&
 	git add four &&
diff --git a/t/t7031-verify-tag-signed-ssh.sh b/t/t7031-verify-tag-signed-ssh.sh
index 20913b3713..80359d48f7 100755
--- a/t/t7031-verify-tag-signed-ssh.sh
+++ b/t/t7031-verify-tag-signed-ssh.sh
@@ -116,7 +116,7 @@ test_expect_success GPGSSH,GPGSSH_VERIFYTIME 'verify-tag succeeds with tag date
 	! grep "${GPGSSH_BAD_SIGNATURE}" actual
 '
 
-test_expect_success GPGSSH,GPGSSH_VERIFYTIME 'verify-tag failes with tag date outside of key validity' '
+test_expect_success GPGSSH,GPGSSH_VERIFYTIME 'verify-tag fails with tag date outside of key validity' '
 	test_config gpg.ssh.allowedSignersFile "${GPGSSH_ALLOWED_SIGNERS}" &&
 	test_must_fail git verify-tag timeboxedinvalid-signed 2>actual &&
 	! grep "${GPGSSH_GOOD_SIGNATURE_TRUSTED}" actual
diff --git a/t/t7064-wtstatus-pv2.sh b/t/t7064-wtstatus-pv2.sh
index 06c1301222..2458e9d0eb 100755
--- a/t/t7064-wtstatus-pv2.sh
+++ b/t/t7064-wtstatus-pv2.sh
@@ -77,7 +77,7 @@ test_expect_success 'before initial commit, things added (-z)' '
 	test_cmp expect actual
 '
 
-test_expect_success 'make first commit, comfirm HEAD oid and branch' '
+test_expect_success 'make first commit, confirm HEAD oid and branch' '
 	git commit -m initial &&
 	H0=$(git rev-parse HEAD) &&
 	cat >expect <<-EOF &&
diff --git a/t/t7413-submodule-is-active.sh b/t/t7413-submodule-is-active.sh
index 887d181b72..b9c89b1019 100755
--- a/t/t7413-submodule-is-active.sh
+++ b/t/t7413-submodule-is-active.sh
@@ -22,7 +22,7 @@ test_expect_success 'setup' '
 	git -C super submodule add ../sub sub2 &&
 
 	# Remove submodule.<name>.active entries in order to test in an
-	# environment where only URLs are present in the conifg
+	# environment where only URLs are present in the config
 	git -C super config --unset submodule.sub1.active &&
 	git -C super config --unset submodule.sub2.active &&
 
diff --git a/t/t7513-interpret-trailers.sh b/t/t7513-interpret-trailers.sh
index 0f7d8938d9..818a8dafbd 100755
--- a/t/t7513-interpret-trailers.sh
+++ b/t/t7513-interpret-trailers.sh
@@ -857,7 +857,7 @@ test_expect_success 'using "--where after" with "--no-where"' '
 # the hardcoded default (in WHERE_END) assuming the absence of .gitconfig).
 # Here, the "start" setting of trailer.where is respected, so the new "Acked-by"
 # and "Bug" trailers are placed at the beginning, and not at the end which is
-# the harcoded default.
+# the hardcoded default.
 test_expect_success 'using "--where after" with "--no-where" defaults to configuration' '
 	test_config trailer.ack.key "Acked-by= " &&
 	test_config trailer.bug.key "Bug #" &&
@@ -881,7 +881,7 @@ test_expect_success 'using "--where after" with "--no-where" defaults to configu
 # immediately after it. For the next trailer (Bug #42), we default to using the
 # hardcoded WHERE_END because we don't have any "trailer.where" or
 # "trailer.bug.where" configured.
-test_expect_success 'using "--no-where" defaults to harcoded default if nothing configured' '
+test_expect_success 'using "--no-where" defaults to hardcoded default if nothing configured' '
 	test_config trailer.ack.key "Acked-by= " &&
 	test_config trailer.bug.key "Bug #" &&
 	test_config trailer.separators ":=#" &&
diff --git a/t/t7527-builtin-fsmonitor.sh b/t/t7527-builtin-fsmonitor.sh
index 9b15baa02d..409cd0cd12 100755
--- a/t/t7527-builtin-fsmonitor.sh
+++ b/t/t7527-builtin-fsmonitor.sh
@@ -765,7 +765,7 @@ done
 # by the FSMonitor response to skip those recursive calls.  That is,
 # even if FSMonitor says that the mtime of the submodule directory
 # hasn't changed and it could be implicitly marked valid, we must
-# not take that shortcut.  We need to force the recusion into the
+# not take that shortcut.  We need to force the recursion into the
 # submodule so that we get a summary of the status *within* the
 # submodule.
 
diff --git a/t/t7601-merge-pull-config.sh b/t/t7601-merge-pull-config.sh
index 7fd8c086af..c83298ba68 100755
--- a/t/t7601-merge-pull-config.sh
+++ b/t/t7601-merge-pull-config.sh
@@ -281,7 +281,7 @@ test_expect_success '--rebase overrides pull.ff unset' '
 	test_does_rebase pull --rebase
 '
 
-# Group 4: --no-rebase heeds pull.ff=!only or explict --ff or --no-ff
+# Group 4: --no-rebase heeds pull.ff=!only or explicit --ff or --no-ff
 
 test_expect_success '--no-rebase works with --no-ff' '
 	test_does_merge_when_ff_possible pull --no-rebase --no-ff
diff --git a/t/t7702-repack-cyclic-alternate.sh b/t/t7702-repack-cyclic-alternate.sh
index f3cdb98eec..d151d4f603 100755
--- a/t/t7702-repack-cyclic-alternate.sh
+++ b/t/t7702-repack-cyclic-alternate.sh
@@ -18,7 +18,7 @@ test_expect_success setup '
 	echo "$(pwd)"/.git/objects/../objects >.git/objects/info/alternates
 '
 
-test_expect_success 're-packing repository with itsself as alternate' '
+test_expect_success 're-packing repository with itself as alternate' '
 	git repack -adl &&
 	git fsck
 '
diff --git a/t/t8009-blame-vs-topicbranches.sh b/t/t8009-blame-vs-topicbranches.sh
index 30331713b9..cc51108464 100755
--- a/t/t8009-blame-vs-topicbranches.sh
+++ b/t/t8009-blame-vs-topicbranches.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-test_description='blaming trough history with topic branches'
+test_description='blaming through history with topic branches'
 
 TEST_PASSES_SANITIZE_LEAK=true
 . ./test-lib.sh
diff --git a/t/t9003-help-autocorrect.sh b/t/t9003-help-autocorrect.sh
index 14a704d0a8..3be063afab 100755
--- a/t/t9003-help-autocorrect.sh
+++ b/t/t9003-help-autocorrect.sh
@@ -65,7 +65,7 @@ test_expect_success 'autocorrect can be declined altogether' '
 test_expect_success 'autocorrect works in work tree created from bare repo' '
 	git clone --bare . bare.git &&
 	git -C bare.git worktree add ../worktree &&
-	git -C worktree -c help.autocorrect=immediate stauts
+	git -C worktree -c help.autocorrect=immediate status
 '
 
 test_done
