Merge branch 'jc/maint-checkout-fileglob-doc'
Updated with help from Peff. * jc/maint-checkout-fileglob-doc: gitcli: contrast wildcard given to shell and to git gitcli: formatting fix Document file-glob for "git checkout -- '*.c'"
This commit is contained in:
@ -37,11 +37,28 @@ arguments. Here are the rules:
|
||||
file called HEAD in your work tree, `git diff HEAD` is ambiguous, and
|
||||
you have to say either `git diff HEAD --` or `git diff -- HEAD` to
|
||||
disambiguate.
|
||||
|
||||
+
|
||||
When writing a script that is expected to handle random user-input, it is
|
||||
a good practice to make it explicit which arguments are which by placing
|
||||
disambiguating `--` at appropriate places.
|
||||
|
||||
* Many commands allow wildcards in paths, but you need to protect
|
||||
them from getting globbed by the shell. These two mean different
|
||||
things:
|
||||
+
|
||||
--------------------------------
|
||||
$ git checkout -- *.c
|
||||
$ git checkout -- \*.c
|
||||
--------------------------------
|
||||
+
|
||||
The former lets your shell expand the fileglob, and you are asking
|
||||
the dot-C files in your working tree to be overwritten with the version
|
||||
in the index. The latter passes the `*.c` to Git, and you are asking
|
||||
the paths in the index that match the pattern to be checked out to your
|
||||
working tree. After running `git add hello.c; rm hello.c`, you will _not_
|
||||
see `hello.c` in your working tree with the former, but with the latter
|
||||
you will.
|
||||
|
||||
Here are the rules regarding the "flags" that you should follow when you are
|
||||
scripting git:
|
||||
|
||||
|
Reference in New Issue
Block a user