summaryrefslogtreecommitdiffstats
path: root/gitcli.txt
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-09-12 15:56:53 -0700
committerJunio C Hamano <gitster@pobox.com>2012-09-12 15:56:53 -0700
commit693e70961ac5a79a46303795f3ca6a0bfd62f375 (patch)
tree70fc25a554a7d96d42e8d233d57316d63f603c47 /gitcli.txt
parenteccdd4a4b39010678cef09a1c28c964396d2cc84 (diff)
downloadgit-htmldocs-693e70961ac5a79a46303795f3ca6a0bfd62f375.tar.gz
Autogenerated HTML docs for v1.7.12-395-g6b149
Diffstat (limited to 'gitcli.txt')
-rw-r--r--gitcli.txt19
1 files changed, 18 insertions, 1 deletions
diff --git a/gitcli.txt b/gitcli.txt
index 3e72a5d68..f6ba90c2d 100644
--- a/gitcli.txt
+++ b/gitcli.txt
@@ -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: