diff --git a/alldocs.go b/alldocs.go
index fe7563c..1461e7d 100644
--- a/alldocs.go
+++ b/alldocs.go
@@ -21,7 +21,7 @@
 Fetch a remote dependency
 
 Usage:
-        gvt fetch [-branch branch | -revision rev | -tag tag] [-precaire] [-no-recurse] importpath
+        gvt fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] importpath
 
 fetch vendors an upstream import path.
 
@@ -30,23 +30,22 @@
 
 Flags:
 	-branch branch
-		fetch from the name branch. If not supplied the default upstream
-		branch will be used.
+		fetch from the named branch. Will also be used by gvt update.
+		If not supplied the default upstream branch will be used.
 	-no-recurse
 		do not fetch recursively.
 	-tag tag
-		fetch the specified tag. If not supplied the default upstream
-		branch will be used.
+		fetch the specified tag.
 	-revision rev
-		fetch the specific revision from the branch (if supplied). If no
-		revision supplied, the latest available will be supplied.
+		fetch the specific revision from the branch or repository.
+		If no revision supplied, the latest available will be fetched.
 	-precaire
 		allow the use of insecure protocols.
 
 Restore dependencies from manifest
 
 Usage:
-        gvt restore
+        gvt restore [-precaire] [-connections N]
 
 restore fetches the dependencies listed in the manifest.
 
diff --git a/fetch.go b/fetch.go
index ef16489..34aedbb 100644
--- a/fetch.go
+++ b/fetch.go
@@ -34,7 +34,7 @@
 
 var cmdFetch = &Command{
 	Name:      "fetch",
-	UsageLine: "fetch [-branch branch | -revision rev | -tag tag] [-precaire] [-no-recurse] importpath",
+	UsageLine: "fetch [-branch branch] [-revision rev | -tag tag] [-precaire] [-no-recurse] importpath",
 	Short:     "fetch a remote dependency",
 	Long: `fetch vendors an upstream import path.
 
@@ -43,16 +43,15 @@
 
 Flags:
 	-branch branch
-		fetch from the name branch. If not supplied the default upstream
-		branch will be used.
+		fetch from the named branch. Will also be used by gvt update.
+		If not supplied the default upstream branch will be used.
 	-no-recurse
 		do not fetch recursively.
 	-tag tag
-		fetch the specified tag. If not supplied the default upstream
-		branch will be used.
+		fetch the specified tag.
 	-revision rev
-		fetch the specific revision from the branch (if supplied). If no
-		revision supplied, the latest available will be supplied.
+		fetch the specific revision from the branch or repository.
+		If no revision supplied, the latest available will be fetched.
 	-precaire
 		allow the use of insecure protocols.
 
diff --git a/gbvendor/repo.go b/gbvendor/repo.go
index 5a52c2b..54b9b40 100644
--- a/gbvendor/repo.go
+++ b/gbvendor/repo.go
@@ -274,16 +274,18 @@
 	return g.url
 }
 
-// Checkout fetchs the remote branch, tag, or revision. If more than one is
-// supplied, an error is returned. If the branch is blank,
-// then the default remote branch will be used. If the branch is "HEAD", an
-// error will be returned.
+// Checkout fetchs the remote branch, tag, or revision. If the branch is blank,
+// then the default remote branch will be used. If the branch is "HEAD" and
+// revision is empty, an impossible update is assumed.
 func (g *gitrepo) Checkout(branch, tag, revision string) (WorkingCopy, error) {
-	if branch == "HEAD" {
+	if branch == "HEAD" && revision == "" {
 		return nil, fmt.Errorf("cannot update %q as it has been previously fetched with -tag or -revision. Please use gvt delete then fetch again.", g.url)
 	}
-	if !atMostOne(branch, tag, revision) {
-		return nil, fmt.Errorf("only one of branch, tag or revision may be supplied")
+	if !atMostOne(tag, revision) {
+		return nil, fmt.Errorf("only one of tag or revision may be supplied")
+	}
+	if !atMostOne(branch, tag) {
+		return nil, fmt.Errorf("only one of branch or tag may be supplied")
 	}
 	dir, err := mktmp()
 	if err != nil {
@@ -293,23 +295,37 @@
 		path: dir,
 	}
 
+	quiet := false
 	args := []string{
 		"clone",
 		"-q", // silence progress report to stderr
 		g.url,
 		dir,
 	}
-	if branch != "" {
-		args = append(args, "--branch", branch)
+	if branch != "" && branch != "HEAD" {
+		args = append(args, "--branch", branch, "--single-branch")
+	}
+	if tag != "" {
+		quiet = true // git REALLY wants to tell you how awesome 'detached HEAD' is...
+		args = append(args, "--branch", tag, "--single-branch")
+		args = append(args, "--depth", "1")
+	}
+	if revision == "" {
+		args = append(args, "--depth", "1")
 	}
 
-	if _, err := run("git", args...); err != nil {
+	if quiet {
+		err = runQuiet("git", args...)
+	} else {
+		_, err = run("git", args...)
+	}
+	if err != nil {
 		wc.Destroy()
 		return nil, err
 	}
 
-	if revision != "" || tag != "" {
-		if err := runOutPath(os.Stderr, dir, "git", "checkout", "-q", oneOf(revision, tag)); err != nil {
+	if revision != "" {
+		if err := runOutPath(os.Stderr, dir, "git", "checkout", "-q", revision); err != nil {
 			wc.Destroy()
 			return nil, err
 		}
@@ -509,6 +525,14 @@
 	return cmd.Run()
 }
 
+func runQuiet(c string, args ...string) error {
+	cmd := exec.Command(c, args...)
+	cmd.Stdin = nil
+	cmd.Stdout = nil
+	cmd.Stderr = nil
+	return cmd.Run()
+}
+
 func runPath(path string, c string, args ...string) ([]byte, error) {
 	var buf bytes.Buffer
 	err := runOutPath(&buf, path, c, args...)
diff --git a/restore.go b/restore.go
index eedeaf5..a19959d 100644
--- a/restore.go
+++ b/restore.go
@@ -96,6 +96,8 @@
 	if err != nil {
 		return fmt.Errorf("dependency could not be processed: %s", err)
 	}
+	// We can't pass the branch here, and benefit from narrow clones, as the
+	// revision might not be in the branch tree anymore. Thanks rebase.
 	wc, err := repo.Checkout("", "", dep.Revision)
 	if err != nil {
 		return fmt.Errorf("dependency could not be fetched: %s", err)
