The flag '--' must always be before any file path when <checkout>
command is used.

The list of 34 test files updated is shown:

  t0021-conversion.sh
  t0027-auto-crlf.sh
  t1011-read-tree-sparse-checkout.sh
  t1050-large.sh
  t1051-large-conversion.sh
  t2009-checkout-statinfo.sh
  t2010-checkout-ambiguous.sh
  t2013-checkout-submodule.sh
  t2016-checkout-patch.sh
  t2022-checkout-paths.sh
  t2028-worktree-move.sh
  t2030-unresolve-info.sh
  t3001-ls-files-others-exclude.sh
  t3509-cherry-pick-merge-df.sh
  t3510-cherry-pick-sequence.sh
  t4015-diff-whitespace.sh
  t4124-apply-ws-rule.sh
  t5403-post-checkout-hook.sh
  t6007-rev-list-cherry-pick-file.sh
  t6026-merge-attr.sh
  t6030-bisect-porcelain.sh
  t6111-rev-list-treesame.sh
  t7001-mv.sh
  t7008-grep-binary.sh
  t7201-co.sh
  t7300-clean.sh
  t7501-commit.sh
  t7502-commit.sh
  t7607-merge-overwrite.sh
  t7810-grep.sh
  t7811-grep-open.sh
  t8006-blame-textconv.sh
  t9010-svn-fe.sh
  t8003-blame-corner-cases.sh

Signed-off-by: Dannier Castro L <dannie...@gmail.com>
---
 t/t0021-conversion.sh                | 12 ++++++------
 t/t0027-auto-crlf.sh                 |  4 ++--
 t/t1011-read-tree-sparse-checkout.sh |  4 ++--
 t/t1050-large.sh                     |  2 +-
 t/t1051-large-conversion.sh          |  4 ++--
 t/t2009-checkout-statinfo.sh         |  6 +++---
 t/t2010-checkout-ambiguous.sh        |  4 ++--
 t/t2013-checkout-submodule.sh        |  4 ++--
 t/t2016-checkout-patch.sh            |  9 +--------
 t/t2022-checkout-paths.sh            |  4 ++--
 t/t2028-worktree-move.sh             |  2 +-
 t/t2030-unresolve-info.sh            |  6 +++---
 t/t3001-ls-files-others-exclude.sh   |  2 +-
 t/t3420-rebase-autostash.sh          |  2 +-
 t/t3510-cherry-pick-sequence.sh      |  4 ++--
 t/t3910-mac-os-precompose.sh         |  4 ++--
 t/t4015-diff-whitespace.sh           |  4 ++--
 t/t4117-apply-reject.sh              |  2 +-
 t/t4124-apply-ws-rule.sh             | 16 ++++++++--------
 t/t5403-post-checkout-hook.sh        |  2 +-
 t/t6007-rev-list-cherry-pick-file.sh |  2 +-
 t/t6026-merge-attr.sh                |  2 +-
 t/t6030-bisect-porcelain.sh          |  2 +-
 t/t6038-merge-text-auto.sh           |  2 +-
 t/t6050-replace.sh                   |  2 +-
 t/t6111-rev-list-treesame.sh         |  2 +-
 t/t7001-mv.sh                        |  2 +-
 t/t7008-grep-binary.sh               |  2 +-
 t/t7201-co.sh                        |  8 ++++----
 t/t7300-clean.sh                     |  2 +-
 t/t7501-commit.sh                    | 10 +++++-----
 t/t7502-commit.sh                    |  2 +-
 t/t7607-merge-overwrite.sh           |  4 ++--
 t/t7810-grep.sh                      |  2 +-
 t/t7811-grep-open.sh                 |  2 +-
 t/t8003-blame-corner-cases.sh        |  2 +-
 t/t8006-blame-textconv.sh            |  2 +-
 t/t9010-svn-fe.sh                    |  2 +-
 38 files changed, 71 insertions(+), 78 deletions(-)

diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
index 46f8e58..9f4955a 100755
--- a/t/t0021-conversion.sh
+++ b/t/t0021-conversion.sh
@@ -380,7 +380,7 @@ test_expect_success PERL 'required process filter should 
filter data' '
                git commit -m "test commit 2" &&
                rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x=.r" &&
 
-               filter_git checkout --quiet --no-progress . &&
+               filter_git checkout --quiet --no-progress -- . &&
                cat >expected.log <<-EOF &&
                        START
                        init handshake complete
@@ -466,7 +466,7 @@ test_expect_success PERL 'required process filter should be 
used only for "clean
 
                rm test.r &&
 
-               filter_git checkout --quiet --no-progress . &&
+               filter_git checkout --quiet --no-progress -- . &&
                # If the filter would be used for "smudge", too, we would see
                # "IN: smudge test.r 57 [OK] -- OUT: 57 . [OK]" here
                cat >expected.log <<-EOF &&
@@ -580,7 +580,7 @@ test_expect_success PERL 'process filter should restart 
after unexpected write f
                rm -f *.r &&
 
                rm -f debug.log &&
-               git checkout --quiet --no-progress . 2>git-stderr.log &&
+               git checkout --quiet --no-progress -- . 2>git-stderr.log &&
 
                grep "smudge write error at" git-stderr.log &&
                grep "error: external filter" git-stderr.log &&
@@ -630,7 +630,7 @@ test_expect_success PERL 'process filter should not be 
restarted if it signals a
                git add . &&
                rm -f *.r &&
 
-               filter_git checkout --quiet --no-progress . &&
+               filter_git checkout --quiet --no-progress -- . &&
                cat >expected.log <<-EOF &&
                        START
                        init handshake complete
@@ -669,7 +669,7 @@ test_expect_success PERL 'process filter abort stops 
processing of all further f
 
                # Note: This test assumes that Git filters files in alphabetical
                # order ("abort.r" before "test.r").
-               filter_git checkout --quiet --no-progress . &&
+               filter_git checkout --quiet --no-progress -- . &&
                cat >expected.log <<-EOF &&
                        START
                        init handshake complete
@@ -763,7 +763,7 @@ test_expect_success PERL 'delayed checkout in process 
filter' '
                test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay10.b &&
 
                rm *.a *.b &&
-               filter_git checkout . &&
+               filter_git checkout -- . &&
                test_cmp_count ../a.exp a.log &&
                test_cmp_count ../b.exp b.log &&
 
diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh
index beb5927..3587e45 100755
--- a/t/t0027-auto-crlf.sh
+++ b/t/t0027-auto-crlf.sh
@@ -293,9 +293,9 @@ checkout_files () {
        do
                rm crlf_false_attr__$f.txt &&
                if test -z "$ceol"; then
-                       git checkout crlf_false_attr__$f.txt
+                       git checkout -- crlf_false_attr__$f.txt
                else
-                       git -c core.eol=$ceol checkout crlf_false_attr__$f.txt
+                       git -c core.eol=$ceol checkout -- 
crlf_false_attr__$f.txt
                fi
        done
 
diff --git a/t/t1011-read-tree-sparse-checkout.sh 
b/t/t1011-read-tree-sparse-checkout.sh
index c167f60..82e0013 100755
--- a/t/t1011-read-tree-sparse-checkout.sh
+++ b/t/t1011-read-tree-sparse-checkout.sh
@@ -257,7 +257,7 @@ test_expect_success 'checkout without 
--ignore-skip-worktree-bits' '
        echo sub >.git/info/sparse-checkout &&
        git checkout &&
        echo modified >> sub/added &&
-       git checkout . &&
+       git checkout -- . &&
        test_path_is_missing init.t &&
        git diff --exit-code HEAD
 '
@@ -269,7 +269,7 @@ test_expect_success 'checkout with 
--ignore-skip-worktree-bits' '
        echo sub >.git/info/sparse-checkout &&
        git checkout &&
        echo modified >> sub/added &&
-       git checkout --ignore-skip-worktree-bits . &&
+       git checkout --ignore-skip-worktree-bits -- . &&
        test_path_is_file init.t &&
        git diff --exit-code HEAD
 '
diff --git a/t/t1050-large.sh b/t/t1050-large.sh
index 6fd264c..270bb40 100755
--- a/t/t1050-large.sh
+++ b/t/t1050-large.sh
@@ -89,7 +89,7 @@ test_expect_success 'add a large file or two' '
 test_expect_success 'checkout a large file' '
        large1=$(git rev-parse :large1) &&
        git update-index --add --cacheinfo 100644 $large1 another &&
-       git checkout another &&
+       git checkout -- another &&
        test_cmp large1 another
 '
 
diff --git a/t/t1051-large-conversion.sh b/t/t1051-large-conversion.sh
index 8b7640b..7326528 100755
--- a/t/t1051-large-conversion.sh
+++ b/t/t1051-large-conversion.sh
@@ -18,7 +18,7 @@ check_input() {
 
 check_output() {
        rm -f small large &&
-       git checkout small large &&
+       git checkout -- small large &&
        head -n 1 large >large.head &&
        test_cmp small large.head
 }
@@ -76,7 +76,7 @@ test_expect_success 'user-defined filters convert on output' '
 test_expect_success 'ident converts on output' '
        set_attr ident &&
        rm -f small large &&
-       git checkout small large &&
+       git checkout -- small large &&
        sed -n "s/Id: .*/Id: SHA/p" <small >small.clean &&
        head -n 1 large >large.head &&
        sed -n "s/Id: .*/Id: SHA/p" <large.head >large.clean &&
diff --git a/t/t2009-checkout-statinfo.sh b/t/t2009-checkout-statinfo.sh
index f3c2152..0a51b14 100755
--- a/t/t2009-checkout-statinfo.sh
+++ b/t/t2009-checkout-statinfo.sh
@@ -37,13 +37,13 @@ test_expect_success 'path checkout' '
        git reset --hard &&
        test "$(git diff-files --raw)" = "" &&
 
-       git checkout master world &&
+       git checkout master -- world &&
        test "$(git diff-files --raw)" = "" &&
 
-       git checkout side world &&
+       git checkout side -- world &&
        test "$(git diff-files --raw)" = "" &&
 
-       git checkout master world &&
+       git checkout master -- world &&
        test "$(git diff-files --raw)" = ""
 
 '
diff --git a/t/t2010-checkout-ambiguous.sh b/t/t2010-checkout-ambiguous.sh
index 2e47fe0..87c8ad2 100755
--- a/t/t2010-checkout-ambiguous.sh
+++ b/t/t2010-checkout-ambiguous.sh
@@ -29,7 +29,7 @@ test_expect_success 'checkout world from the index' '
 '
 
 test_expect_success 'non ambiguous call' '
-       git checkout all
+       git checkout -- all
 '
 
 test_expect_success 'allow the most common case' '
@@ -44,7 +44,7 @@ test_expect_success 'check ambiguity' '
 test_expect_success 'check ambiguity in subdir' '
        mkdir sub &&
        # not ambiguous because sub/world does not exist
-       git -C sub checkout world ../all &&
+       git -C sub checkout world -- ../all &&
        echo hello >sub/world &&
        # ambiguous because sub/world does exist
        test_must_fail git -C sub checkout world ../all
diff --git a/t/t2013-checkout-submodule.sh b/t/t2013-checkout-submodule.sh
index 6ef1573..2581382 100755
--- a/t/t2013-checkout-submodule.sh
+++ b/t/t2013-checkout-submodule.sh
@@ -34,9 +34,9 @@ test_expect_success '"checkout <submodule>" updates the index 
only' '
        git update-index --refresh &&
        git diff-files --quiet &&
        git diff-index --quiet --cached HEAD &&
-       git checkout HEAD^ submodule &&
+       git checkout HEAD^ -- submodule &&
        test_must_fail git diff-files --quiet &&
-       git checkout HEAD submodule &&
+       git checkout HEAD -- submodule &&
        git diff-files --quiet
 '
 
diff --git a/t/t2016-checkout-patch.sh b/t/t2016-checkout-patch.sh
index 9cd0ac4..c39d2c4 100755
--- a/t/t2016-checkout-patch.sh
+++ b/t/t2016-checkout-patch.sh
@@ -79,13 +79,6 @@ test_expect_success PERL 'git checkout -p handles deletion' '
 # dir/foo.  There's always an extra 'n' to reject edits to dir/foo in
 # the failure case (and thus get out of the loop).
 
-test_expect_success PERL 'path limiting works: dir' '
-       set_state dir/foo work head &&
-       (echo y; echo n) | git checkout -p dir &&
-       verify_saved_state bar &&
-       verify_state dir/foo head head
-'
-
 test_expect_success PERL 'path limiting works: -- dir' '
        set_state dir/foo work head &&
        (echo y; echo n) | git checkout -p -- dir &&
@@ -103,7 +96,7 @@ test_expect_success PERL 'path limiting works: HEAD^ -- dir' 
'
 test_expect_success PERL 'path limiting works: foo inside dir' '
        set_state dir/foo work head &&
        # the third n is to get out in case it mistakenly does not apply
-       (echo y; echo n; echo n) | (cd dir && git checkout -p foo) &&
+       (echo y; echo n; echo n) | (cd dir && git checkout -p -- foo) &&
        verify_saved_state bar &&
        verify_state dir/foo head head
 '
diff --git a/t/t2022-checkout-paths.sh b/t/t2022-checkout-paths.sh
index f46d049..6e254fa 100755
--- a/t/t2022-checkout-paths.sh
+++ b/t/t2022-checkout-paths.sh
@@ -26,7 +26,7 @@ test_expect_success 'checking out paths out of a tree does 
not clobber unrelated
        echo untracked >expect.next2 &&
        cat expect.next2 >dir/next2 &&
 
-       git checkout master dir &&
+       git checkout master -- dir &&
 
        test_cmp expect.common dir/common &&
        test_path_is_file dir/master &&
@@ -52,7 +52,7 @@ test_expect_success 'do not touch unmerged entries matching 
$path but not in $tr
        EOF
        git update-index --index-info <expect.next0 &&
 
-       git checkout master dir &&
+       git checkout master -- dir &&
 
        test_cmp expect.common dir/common &&
        test_path_is_file dir/master &&
diff --git a/t/t2028-worktree-move.sh b/t/t2028-worktree-move.sh
index 5d5b363..3e869e8 100755
--- a/t/t2028-worktree-move.sh
+++ b/t/t2028-worktree-move.sh
@@ -111,7 +111,7 @@ test_expect_success 'remove locked worktree' '
 
 test_expect_success 'remove worktree with dirty tracked file' '
        echo dirty >>destination/init.t &&
-       test_when_finished "git -C destination checkout init.t" &&
+       test_when_finished "git -C destination checkout -- init.t" &&
        test_must_fail git worktree remove destination
 '
 
diff --git a/t/t2030-unresolve-info.sh b/t/t2030-unresolve-info.sh
index 309199b..b599c37 100755
--- a/t/t2030-unresolve-info.sh
+++ b/t/t2030-unresolve-info.sh
@@ -108,7 +108,7 @@ test_expect_success 'plumbing clears' '
 test_expect_success 'add records checkout -m undoes' '
        prime_resolve_undo &&
        git diff HEAD &&
-       git checkout --conflict=merge fi/le &&
+       git checkout --conflict=merge -- fi/le &&
        echo checkout used the record and removed it &&
        check_resolve_undo removed &&
        echo the index and the work tree is unmerged again &&
@@ -131,7 +131,7 @@ test_expect_success 'rerere and rerere forget' '
        rerere_id=$(cd .git/rr-cache && echo */postimage) &&
        rerere_id=${rerere_id%/postimage} &&
        test -f .git/rr-cache/$rerere_id/postimage &&
-       git checkout -m fi/le &&
+       git checkout -m -- fi/le &&
        echo resurrect the conflict &&
        grep "^=======" fi/le &&
        echo reresolve the conflict &&
@@ -157,7 +157,7 @@ test_expect_success 'rerere and rerere forget 
(subdirectory)' '
        rerere_id=$(cd .git/rr-cache && echo */postimage) &&
        rerere_id=${rerere_id%/postimage} &&
        test -f .git/rr-cache/$rerere_id/postimage &&
-       (cd fi && git checkout -m le) &&
+       (cd fi && git checkout -m -- le) &&
        echo resurrect the conflict &&
        grep "^=======" fi/le &&
        echo reresolve the conflict &&
diff --git a/t/t3001-ls-files-others-exclude.sh 
b/t/t3001-ls-files-others-exclude.sh
index 3fc484e..f376590 100755
--- a/t/t3001-ls-files-others-exclude.sh
+++ b/t/t3001-ls-files-others-exclude.sh
@@ -103,7 +103,7 @@ test_expect_success \
      test_cmp expect output'
 
 test_expect_success 'restore gitignore' '
-       git checkout --ignore-skip-worktree-bits $allignores &&
+       git checkout --ignore-skip-worktree-bits -- $allignores &&
        rm .git/index
 '
 
diff --git a/t/t3420-rebase-autostash.sh b/t/t3420-rebase-autostash.sh
index e243700..7503b0f 100755
--- a/t/t3420-rebase-autostash.sh
+++ b/t/t3420-rebase-autostash.sh
@@ -345,7 +345,7 @@ test_expect_success 'autostash is saved on editor failure 
with conflict' '
        ) &&
        echo conflicting-content >expected &&
        test_cmp expected file0 &&
-       git checkout file0 &&
+       git checkout -- file0 &&
        git stash pop &&
        echo uncommitted-content >expected &&
        test_cmp expected file0
diff --git a/t/t3510-cherry-pick-sequence.sh b/t/t3510-cherry-pick-sequence.sh
index 0acf4b1..742e467 100755
--- a/t/t3510-cherry-pick-sequence.sh
+++ b/t/t3510-cherry-pick-sequence.sh
@@ -52,7 +52,7 @@ test_expect_success 'cherry-pick mid-cherry-pick-sequence' '
        test_must_fail git cherry-pick base..anotherpick &&
        test_cmp_rev picked CHERRY_PICK_HEAD &&
        # "oops, I forgot that these patches rely on the change from base"
-       git checkout HEAD foo &&
+       git checkout HEAD -- foo &&
        git cherry-pick base &&
        git cherry-pick picked &&
        git cherry-pick --continue &&
@@ -205,7 +205,7 @@ test_expect_success '--abort refuses to clobber unrelated 
change, harder case' '
        test_line_count = 2 log &&
        test_must_fail git update-index --refresh &&
 
-       git checkout unrelated &&
+       git checkout -- unrelated &&
        git cherry-pick --abort &&
        test_cmp_rev initial HEAD
 '
diff --git a/t/t3910-mac-os-precompose.sh b/t/t3910-mac-os-precompose.sh
index 26dd5b7..6932f20 100755
--- a/t/t3910-mac-os-precompose.sh
+++ b/t/t3910-mac-os-precompose.sh
@@ -141,9 +141,9 @@ test_expect_success "git checkout nfc" '
        git checkout f.$Odiarnfc
 '
 # Make it possible to checkout files with their NFD names
-test_expect_success "git checkout file nfd" '
+test_expect_success "git checkout -- file nfd" '
        rm -f f.* &&
-       git checkout f.$Odiarnfd
+       git checkout -- f.$Odiarnfd
 '
 # Make it possible to checkout links with their NFD names
 test_expect_success "git checkout link nfd" '
diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh
index 17df491..90da499 100755
--- a/t/t4015-diff-whitespace.sh
+++ b/t/t4015-diff-whitespace.sh
@@ -552,7 +552,7 @@ test_expect_success 'check with space before tab in indent' 
'
 '
 
 test_expect_success '--check and --exit-code are not exclusive' '
-       git checkout x &&
+       git checkout -- x &&
        git diff --check --exit-code
 '
 
@@ -769,7 +769,7 @@ test_expect_success 'checkdiff detects new trailing blank 
lines (2)' '
 '
 
 test_expect_success 'checkdiff allows new blank lines' '
-       git checkout x &&
+       git checkout -- x &&
        mv x y &&
        (
                echo "/* This is new */" &&
diff --git a/t/t4117-apply-reject.sh b/t/t4117-apply-reject.sh
index d80187d..e97dfa5 100755
--- a/t/t4117-apply-reject.sh
+++ b/t/t4117-apply-reject.sh
@@ -49,7 +49,7 @@ test_expect_success setup '
 test_expect_success 'apply --reject is incompatible with --3way' '
        test_when_finished "cat saved.file1 >file1" &&
        git diff >patch.0 &&
-       git checkout file1 &&
+       git checkout -- file1 &&
        test_must_fail git apply --reject --3way patch.0 &&
        git diff --exit-code
 '
diff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh
index 4fc27c5..ae5ace7 100755
--- a/t/t4124-apply-ws-rule.sh
+++ b/t/t4124-apply-ws-rule.sh
@@ -223,7 +223,7 @@ test_expect_success 'blank at EOF with --whitespace=fix 
(1)' '
        { cat expect; echo; } >one &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        git apply --whitespace=fix patch &&
        test_cmp expect one
 '
@@ -235,7 +235,7 @@ test_expect_success 'blank at EOF with --whitespace=fix 
(2)' '
        { cat expect; echo; echo; } >one &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        git apply --whitespace=fix patch &&
        test_cmp expect one
 '
@@ -247,7 +247,7 @@ test_expect_success 'blank at EOF with --whitespace=fix 
(3)' '
        { cat expect; echo; echo; } >one &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        git apply --whitespace=fix patch &&
        test_cmp expect one
 '
@@ -259,7 +259,7 @@ test_expect_success 'blank at end of hunk, not at EOF with 
--whitespace=fix' '
        cp expect one &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        git apply --whitespace=fix patch &&
        test_cmp expect one
 '
@@ -271,7 +271,7 @@ test_expect_success 'blank at EOF with --whitespace=warn' '
        cat one >expect &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        git apply --whitespace=warn patch 2>error &&
        test_cmp expect one &&
        grep "new blank line at EOF" error
@@ -284,7 +284,7 @@ test_expect_success 'blank at EOF with --whitespace=error' '
        echo >>one &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        test_must_fail git apply --whitespace=error patch 2>error &&
        test_cmp expect one &&
        grep "new blank line at EOF" error
@@ -297,7 +297,7 @@ test_expect_success 'blank but not empty at EOF' '
        cat one >expect &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        git apply --whitespace=warn patch 2>error &&
        test_cmp expect one &&
        grep "new blank line at EOF" error
@@ -309,7 +309,7 @@ test_expect_success 'applying beyond EOF requires one 
non-blank context line' '
        { echo b; } >>one &&
        git diff -- one >patch &&
 
-       git checkout one &&
+       git checkout -- one &&
        { echo a; echo; } >one &&
        cp one expect &&
        test_must_fail git apply --whitespace=fix patch &&
diff --git a/t/t5403-post-checkout-hook.sh b/t/t5403-post-checkout-hook.sh
index fc898c9..f72ee38 100755
--- a/t/t5403-post-checkout-hook.sh
+++ b/t/t5403-post-checkout-hook.sh
@@ -64,7 +64,7 @@ test_expect_success 'post-checkout receives the right args 
with HEAD changed ' '
 '
 
 test_expect_success 'post-checkout receives the right args when not switching 
branches ' '
-       GIT_DIR=clone2/.git git checkout master b &&
+       GIT_DIR=clone2/.git git checkout master -- b &&
        old=$(awk "{print \$1}" clone2/.git/post-checkout.args) &&
        new=$(awk "{print \$2}" clone2/.git/post-checkout.args) &&
        flag=$(awk "{print \$3}" clone2/.git/post-checkout.args) &&
diff --git a/t/t6007-rev-list-cherry-pick-file.sh 
b/t/t6007-rev-list-cherry-pick-file.sh
index f026837..e5b0daa 100755
--- a/t/t6007-rev-list-cherry-pick-file.sh
+++ b/t/t6007-rev-list-cherry-pick-file.sh
@@ -32,7 +32,7 @@ test_expect_success setup '
        git commit -m "E" &&
        git tag E &&
        git checkout master &&
-       git checkout branch foo &&
+       git checkout branch -- foo &&
        test_tick &&
        git commit -m "B" &&
        git tag B &&
diff --git a/t/t6026-merge-attr.sh b/t/t6026-merge-attr.sh
index 8f9b48a..4aae0e9 100755
--- a/t/t6026-merge-attr.sh
+++ b/t/t6026-merge-attr.sh
@@ -72,7 +72,7 @@ test_expect_success 'check merge result in working tree' '
 
 test_expect_success 'retry the merge with longer context' '
        echo text conflict-marker-size=32 >>.gitattributes &&
-       git checkout -m text &&
+       git checkout -m -- text &&
        sed -ne "/^\([<=>]\)\1\1\1*/{
                s/ .*$//
                p
diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh
index f84ff94..7104f08 100755
--- a/t/t6030-bisect-porcelain.sh
+++ b/t/t6030-bisect-porcelain.sh
@@ -177,7 +177,7 @@ test_expect_success 'bisect start: no ".git/BISECT_START" 
if checkout error' '
        grep "* other" branch.output > /dev/null &&
        test_must_fail test -e .git/BISECT_START &&
        test -z "$(git for-each-ref "refs/bisect/*")" &&
-       git checkout HEAD hello
+       git checkout HEAD -- hello
 '
 
 # $HASH1 is good, $HASH4 is bad, we skip $HASH3
diff --git a/t/t6038-merge-text-auto.sh b/t/t6038-merge-text-auto.sh
index 5e8d5fa..2e2979b 100755
--- a/t/t6038-merge-text-auto.sh
+++ b/t/t6038-merge-text-auto.sh
@@ -51,7 +51,7 @@ test_expect_success setup '
 
        git rm .gitattributes &&
        rm file &&
-       git checkout file &&
+       git checkout -- file &&
        test_tick &&
        git commit -m "remove .gitattributes" &&
        git tag c &&
diff --git a/t/t6050-replace.sh b/t/t6050-replace.sh
index c630aba..0bea83c 100755
--- a/t/t6050-replace.sh
+++ b/t/t6050-replace.sh
@@ -292,7 +292,7 @@ test_expect_success 'not just commits' '
        git update-ref refs/replace/$ORIGINAL $REPLACED &&
        mv file file.original &&
 
-       git checkout file &&
+       git checkout -- file &&
        test_cmp file.replaced file
 '
 
diff --git a/t/t6111-rev-list-treesame.sh b/t/t6111-rev-list-treesame.sh
index 32474c2..bc46a77 100755
--- a/t/t6111-rev-list-treesame.sh
+++ b/t/t6111-rev-list-treesame.sh
@@ -43,7 +43,7 @@ test_expect_success setup '
        test_commit "file=Blah" file "Blah" F &&
 
        test_tick && git merge --no-commit third-branch &&
-       git checkout third-branch file &&
+       git checkout third-branch -- file &&
        git commit &&
        note G &&
        git branch fiddler-branch &&
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index d4e6485..f46903f 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -481,7 +481,7 @@ test_expect_success 'mv -k does not accidentally destroy 
submodules' '
        git status --porcelain >actual &&
        grep "^R  sub -> dest/sub" actual &&
        git reset --hard &&
-       git checkout .
+       git checkout -- .
 '
 
 test_expect_success 'moving a submodule in nested directories' '
diff --git a/t/t7008-grep-binary.sh b/t/t7008-grep-binary.sh
index 615e7e0..de19773 100755
--- a/t/t7008-grep-binary.sh
+++ b/t/t7008-grep-binary.sh
@@ -192,7 +192,7 @@ test_expect_success 'grep --cached respects binary diff 
attribute (2)' '
        rm .gitattributes &&
        git grep --cached text t >actual &&
        test_when_finished "git rm --cached .gitattributes" &&
-       test_when_finished "git checkout .gitattributes" &&
+       test_when_finished "git checkout -- .gitattributes" &&
        test_cmp expect actual
 '
 
diff --git a/t/t7201-co.sh b/t/t7201-co.sh
index 76c223c..65a3d24 100755
--- a/t/t7201-co.sh
+++ b/t/t7201-co.sh
@@ -498,7 +498,7 @@ test_expect_success 'checkout with an unmerged path can be 
ignored' '
        cat sample >fild &&
        cat sample >file &&
        cat sample >filf &&
-       git checkout -f fild file filf &&
+       git checkout -f -- fild file filf &&
        test_cmp expect fild &&
        test_cmp expect filf &&
        test_cmp sample file
@@ -511,11 +511,11 @@ test_expect_success 'checkout unmerged stage' '
        cat sample >fild &&
        cat sample >file &&
        cat sample >filf &&
-       git checkout --ours . &&
+       git checkout --ours -- . &&
        test_cmp expect fild &&
        test_cmp expect filf &&
        test_cmp expect file &&
-       git checkout --theirs file &&
+       git checkout --theirs -- file &&
        test ztheirside = "z$(cat file)"
 '
 
@@ -677,7 +677,7 @@ test_expect_success 'custom merge driver with checkout -m' '
        ) &&
 
        mv arm expect &&
-       git checkout -m arm &&
+       git checkout -m -- arm &&
        test_cmp expect arm
 '
 
diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh
index 7b36954..7b22454 100755
--- a/t/t7300-clean.sh
+++ b/t/t7300-clean.sh
@@ -38,7 +38,7 @@ test_expect_success 'git clean with skip-worktree .gitignore' 
'
        test -f obj.o &&
        test -f build/lib.so &&
        git update-index --no-skip-worktree .gitignore &&
-       git checkout .gitignore
+       git checkout -- .gitignore
 '
 
 test_expect_success 'git clean' '
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh
index fa61b1a..bae0137 100755
--- a/t/t7501-commit.sh
+++ b/t/t7501-commit.sh
@@ -30,12 +30,12 @@ test_expect_success 'setup: initial commit' '
 '
 
 test_expect_success '-m and -F do not mix' '
-       git checkout HEAD file && echo >>file && git add file &&
+       git checkout HEAD -- file && echo >>file && git add file &&
        test_must_fail git commit -m foo -m bar -F file
 '
 
 test_expect_success '-m and -C do not mix' '
-       git checkout HEAD file && echo >>file && git add file &&
+       git checkout HEAD -- file && echo >>file && git add file &&
        test_must_fail git commit -C HEAD -m illegal
 '
 
@@ -119,18 +119,18 @@ test_expect_success 'empty commit message' '
 '
 
 test_expect_success 'template "emptyness" check does not kick in with -F' '
-       git checkout HEAD file && echo >>file && git add file &&
+       git checkout HEAD -- file && echo >>file && git add file &&
        git commit -t file -F file
 '
 
 test_expect_success 'template "emptyness" check' '
-       git checkout HEAD file && echo >>file && git add file &&
+       git checkout HEAD -- file && echo >>file && git add file &&
        test_must_fail git commit -t file 2>err &&
        test_i18ngrep "did not edit" err
 '
 
 test_expect_success 'setup: commit message from file' '
-       git checkout HEAD file && echo >>file && git add file &&
+       git checkout HEAD -- file && echo >>file && git add file &&
        echo this is the commit message, coming from a file >msg &&
        git commit -F msg -a
 '
diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh
index d33a3cb..ec8df56 100755
--- a/t/t7502-commit.sh
+++ b/t/t7502-commit.sh
@@ -470,7 +470,7 @@ test_expect_success 'Hand committing of a redundant merge 
removes dups' '
 
        git rev-parse second master >expect &&
        test_must_fail git merge second master &&
-       git checkout master g &&
+       git checkout master -- g &&
        EDITOR=: git commit -a &&
        git cat-file commit HEAD | sed -n -e "s/^parent //p" -e "/^$/q" >actual 
&&
        test_cmp expect actual
diff --git a/t/t7607-merge-overwrite.sh b/t/t7607-merge-overwrite.sh
index 9c422bc..5e2ea53 100755
--- a/t/t7607-merge-overwrite.sh
+++ b/t/t7607-merge-overwrite.sh
@@ -55,7 +55,7 @@ test_expect_success 'will not overwrite staged changes' '
        rm c2.c &&
        test_must_fail git merge c2 &&
        test_path_is_missing .git/MERGE_HEAD &&
-       git checkout c2.c &&
+       git checkout -- c2.c &&
        test_cmp important c2.c
 '
 
@@ -88,7 +88,7 @@ test_expect_success 'will not overwrite removed file with 
staged changes' '
        rm c1.c &&
        test_must_fail git merge c1a &&
        test_path_is_missing .git/MERGE_HEAD &&
-       git checkout c1.c &&
+       git checkout -- c1.c &&
        test_cmp important c1.c
 '
 
diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh
index 1797f63..8d00cc6 100755
--- a/t/t7810-grep.sh
+++ b/t/t7810-grep.sh
@@ -714,7 +714,7 @@ test_expect_success 'grep with CE_VALID file' '
        rm t/t &&
        test "$(git grep test)" = "t/t:test" &&
        git update-index --no-assume-unchanged t/t &&
-       git checkout t/t
+       git checkout -- t/t
 '
 
 cat >expected <<EOF
diff --git a/t/t7811-grep-open.sh b/t/t7811-grep-open.sh
index e1951a5..e0e0fbf 100755
--- a/t/t7811-grep-open.sh
+++ b/t/t7811-grep-open.sh
@@ -119,7 +119,7 @@ test_expect_success 'modified file' '
        >empty &&
 
        echo "enum grep_pat_token" >unrelated &&
-       test_when_finished "git checkout HEAD unrelated" &&
+       test_when_finished "git checkout HEAD -- unrelated" &&
        GIT_PAGER=./less git grep -F -O "enum grep_pat_token" >out &&
        test_cmp expect actual &&
        test_cmp empty out
diff --git a/t/t8003-blame-corner-cases.sh b/t/t8003-blame-corner-cases.sh
index 661f9d4..da3f98f 100755
--- a/t/t8003-blame-corner-cases.sh
+++ b/t/t8003-blame-corner-cases.sh
@@ -265,7 +265,7 @@ test_expect_success 'blame file with CRLF 
core.autocrlf=true' '
        git commit -m "add crlfinrepo" &&
        git config core.autocrlf true &&
        mv crlfinrepo tmp &&
-       git checkout crlfinrepo &&
+       git checkout -- crlfinrepo &&
        rm tmp &&
        git blame crlfinrepo >actual &&
        grep "A U Thor" actual
diff --git a/t/t8006-blame-textconv.sh b/t/t8006-blame-textconv.sh
index 7683515..a81d677 100755
--- a/t/t8006-blame-textconv.sh
+++ b/t/t8006-blame-textconv.sh
@@ -73,7 +73,7 @@ test_expect_success 'blame --textconv going through 
revisions' '
 '
 
 test_expect_success 'blame --textconv with local changes' '
-       test_when_finished "git checkout zero.bin" &&
+       test_when_finished "git checkout -- zero.bin" &&
        printf "bin: updated number 0\015" >zero.bin &&
        git blame --textconv zero.bin >blame &&
        expect="(Not Committed Yet ....-..-.. ..:..:.. +0000 1)" &&
diff --git a/t/t9010-svn-fe.sh b/t/t9010-svn-fe.sh
index 8eaaca6..ba54fb2 100755
--- a/t/t9010-svn-fe.sh
+++ b/t/t9010-svn-fe.sh
@@ -258,7 +258,7 @@ test_expect_success 'directory with files' '
        try_dump directory.dump &&
 
        git ls-tree -r --name-only HEAD >actual.files &&
-       git checkout HEAD directory &&
+       git checkout HEAD -- directory &&
        test_cmp expect.files actual.files &&
        test_cmp hello directory/file1 &&
        test_cmp hi directory/file2
-- 
2.7.4

Reply via email to