diff --git a/cmd/jiri/doc.go b/cmd/jiri/doc.go
index ac07025..beb3e70 100644
--- a/cmd/jiri/doc.go
+++ b/cmd/jiri/doc.go
@@ -795,12 +795,16 @@
  -exit-on-error=false
    If set, all commands will killed as soon as one reports an error, otherwise,
    each will run to completion.
+ -has-branch=
+   A regular expression specifying branch names to use in matching projects. A
+   project will match if the specified branch exists, even if it is not checked
+   out.
  -has-gerrit-message=false
    If specified, match branches that have, or have no, gerrit message
  -has-uncommitted=false
    If specified, match projects that have, or have no, uncommitted changes
  -has-untracked=false
-   if specified, match projects that have, or have no, untracked files
+   If specified, match projects that have, or have no, untracked files
  -interactive=true
    If set, the command to be run is interactive and should not have its
    stdout/stderr manipulated. This flag cannot be used with -show-name-prefix,
diff --git a/cmd/jiri/runp.go b/cmd/jiri/runp.go
index 381a18f..93402f1 100644
--- a/cmd/jiri/runp.go
+++ b/cmd/jiri/runp.go
@@ -68,6 +68,7 @@
 	exitOnError      bool
 	collateOutput    bool
 	editMessage      bool
+	hasBranch        string
 }
 
 func registerCommonFlags(flags *flag.FlagSet, values *runpFlagValues) {
@@ -75,13 +76,14 @@
 	flags.BoolVar(&values.verbose, "v", false, "Print verbose logging information")
 	flags.StringVar(&values.projectKeys, "projects", "", "A Regular expression specifying project keys to run commands in. By default, runp will use projects that have the same branch checked as the current project.")
 	flags.BoolVar(&values.hasUncommitted, "has-uncommitted", false, "If specified, match projects that have, or have no, uncommitted changes")
-	flags.BoolVar(&values.hasUntracked, "has-untracked", false, "if specified, match projects that have, or have no, untracked files")
+	flags.BoolVar(&values.hasUntracked, "has-untracked", false, "If specified, match projects that have, or have no, untracked files")
 	flags.BoolVar(&values.hasGerritMessage, "has-gerrit-message", false, "If specified, match branches that have, or have no, gerrit message")
 	flags.BoolVar(&values.interactive, "interactive", true, "If set, the command to be run is interactive and should not have its stdout/stderr manipulated. This flag cannot be used with -show-name-prefix, -show-key-prefix or -collate-stdout.")
 	flags.BoolVar(&values.showNamePrefix, "show-name-prefix", false, "If set, each line of output from each project will begin with the name of the project followed by a colon. This is intended for use with long running commands where the output needs to be streamed. Stdout and stderr are spliced apart. This flag cannot be used with -interactive, -show-key-prefix or -collate-stdout.")
 	flags.BoolVar(&values.showKeyPrefix, "show-key-prefix", false, "If set, each line of output from each project will begin with the key of the project followed by a colon. This is intended for use with long running commands where the output needs to be streamed. Stdout and stderr are spliced apart. This flag cannot be used with -interactive, -show-name-prefix or -collate-stdout")
 	flags.BoolVar(&values.collateOutput, "collate-stdout", true, "Collate all stdout output from each parallel invocation and display it as if had been generated sequentially. This flag cannot be used with -show-name-prefix, -show-key-prefix or -interactive.")
 	flags.BoolVar(&values.exitOnError, "exit-on-error", false, "If set, all commands will killed as soon as one reports an error, otherwise, each will run to completion.")
+	flags.StringVar(&values.hasBranch, "has-branch", "", "A regular expression specifying branch names to use in matching projects. A project will match if the specified branch exists, even if it is not checked out.")
 }
 
 func init() {
@@ -306,7 +308,7 @@
 		runpFlags.collateOutput = false
 	}
 
-	var keysRE *regexp.Regexp
+	var keysRE, branchRE *regexp.Regexp
 	var err error
 
 	if profilescmdline.IsFlagSet(cmd.ParsedFlags, "projects") {
@@ -316,6 +318,13 @@
 		}
 	}
 
+	if profilescmdline.IsFlagSet(cmd.ParsedFlags, "has-branch") {
+		branchRE, err = regexp.Compile(runpFlags.hasBranch)
+		if err != nil {
+			return fmt.Errorf("failed to compile has-branch regexp: %q: %v", runpFlags.hasBranch, err)
+		}
+	}
+
 	for _, f := range []string{"show-key-prefix", "show-name-prefix"} {
 		if profilescmdline.IsFlagSet(cmd.ParsedFlags, f) {
 			runpFlags.interactive = false
@@ -350,6 +359,18 @@
 				continue
 			}
 		}
+		if branchRE != nil {
+			found := false
+			for _, br := range state.Branches {
+				if branchRE.MatchString(br.Name) {
+					found = true
+					break
+				}
+			}
+			if !found {
+				continue
+			}
+		}
 		if hasUntrackedSet && (state.HasUntracked != runpFlags.hasUntracked) {
 			continue
 		}
