summaryrefslogtreecommitdiff
path: root/Documentation/gitcli.txt
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-09-07 13:49:15 -0700
committerJunio C Hamano <gitster@pobox.com>2012-09-10 12:59:36 -0700
commit8300016e0ab6959c4b45f64ec585832726430fc7 (patch)
tree7f6011f1efc90714b3366e538be29daf484351fa /Documentation/gitcli.txt
parent008566e0f8ef9751c43197f40ac08d3bdfce78a7 (diff)
downloadgit-8300016e0ab6959c4b45f64ec585832726430fc7.tar.gz
gitcli: contrast wildcard given to shell and to git
People who are not used to working with shell may intellectually understand how the command line argument is massaged by the shell but still have a hard time visualizing the difference between letting the shell expand fileglobs and having Git see the fileglob to use as a pathspec. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'Documentation/gitcli.txt')
-rw-r--r--Documentation/gitcli.txt17
1 files changed, 17 insertions, 0 deletions
diff --git a/Documentation/gitcli.txt b/Documentation/gitcli.txt
index c4edf042d4..00b8403225 100644
--- a/Documentation/gitcli.txt
+++ b/Documentation/gitcli.txt
@@ -42,6 +42,23 @@ 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: