1MGITSTATUS(1) MGITSTATUS(1)
2
3
4
6 mgitstatus - Show uncommitted, untracked and unpushed changes for mul‐
7 tiple Git repos.
8
10 mgitstatus [--version] [-w] [-e] [-f] [--throttle SEC] [-c]
11 [-d/--depth=2] [--flatten] [--no-X] [DIR [DIR]...]
12
14 mgitstatus shows uncommitted, untracked and unpushed changes in multi‐
15 ple Git repositories. By default, mgitstatus scans two directories
16 deep. This can be changed with the -d (--depth) option. If DEPTH is
17 0, the scan is infinitely deep.
18
19 mgitstatus shows:
20
21 • Uncommitted changes if there are unstaged or uncommitted changes on
22 the checked out branch.
23
24 • Untracked files if there are untracked files which are not ignored.
25
26 • Needs push (BRANCH) if the branch is tracking a (remote) branch which
27 is behind.
28
29 • Needs upstream (BRANCH) if a branch does not have a local or remote
30 upstream branch configured. Changes in the branch may otherwise nev‐
31 er be pushed or merged.
32
33 • Needs pull (BRANCH) if the branch is tracking a (remote) branch which
34 is ahead. This requires that the local git repo already knows about
35 the remote changes (i.e. you’ve done a fetch), or that you specify
36 the -f option. mgitstatus does NOT contact the remote by default.
37
38 • X stashes if there are stashes.
39
40 Since there are a lot of different states a git repository can be in,
41 mgitstatus makes no guarantees that all states are taken into account.
42
44 --version
45 Show version
46
47 -w Warn about dirs that are not Git repositories
48
49 -e Exclude repos that are `ok'
50
51 -f Do a `git fetch' on each repo (slow for many repos)
52
53 --throttle SEC
54 Wait SEC seconds between each `git fetch' (-f option)
55
56 -c Force color output (preserve colors when using pipes)
57
58 -d, --depth=2
59 Scan this many directories deep. Default is 2. If 0, the scan
60 is infinitely deep
61
62 --flatten
63 Flatten output by only showing one status per line. If a repo
64 has multiple statuses, multiple lines are shown for that repo.
65 This aids in grepability.
66
67 You can limit output with the following options:
68
69 --no-push
70 Do not show branches that need a push.
71
72 --no-pull
73 Do not show branches that need a pull.
74
75 --no-upstream
76 Do not show branches that need an upstream.
77
78 --no-uncommitted
79 Do not show branches that have unstaged or uncommitted changes.
80
81 --no-untracked
82 Do not show branches that have untracked files.
83
84 --no-stashes
85 Do now show stashes
86
87 --no-ok
88 Do now show repos that are `ok' (same as -e)
89
91 The following command scans two directories deep for Git projects and
92 shows their status:
93
94 $ mgitstatus
95 ./fboender/sla: ok
96 ./fboender/multi-git-status: Needs push (master) Untracked files
97 ./other/peewee: ok
98
99 To scan deeper (three dirs instead of two) in the current dir:
100
101 $ mgitstatus -d 3
102
103 The following command scans three levels deep in /opt/deploy/ and hides
104 repos that are `ok'. It does not show stashes:
105
106 $ mgitstatus -e --no-stashes -d 3 /opt/deploy
107
108 To ignore a repo, set the mgitstatus.ignore git configuration option
109 for that repo to true. E.g.:
110
111 $ cd stupidrepo
112 $ git config --local mgitstatus.ignore true
113
114 Sort output by repo name while retaining colors:
115
116 $ mgitstatus -c | sort
117 ./ansible: ok
118 ./ansible-cmdb: Needs push (master) Uncommitted changes Untracked files
119 ./davis: ok
120 ./espy: Uncommitted changes Untracked files
121 ./garner: Untracked files
122 ./garner-chains: ok
123 ./mdpreview: ok
124
125 Sort output by repo status while retaining colors:
126
127 $ mgitstatus -c --flatten -e | sort -k2
128 ./fboender/ansible-cmdb: Uncommitted changes
129 ./fboender/espy: Uncommitted changes
130 ./fboender/multi-git-status: Uncommitted changes
131 ./fboender/ansible-cmdb: Needs push (master)
132 ./fboender/ansible-cmdb: Untracked files
133 ./fboender/espy: Untracked files
134 ./fboender/garner: Untracked files
135 ./fboender/multi-git-status: Untracked files
136
137 Force color output and flatten the output so we can grep for things:
138
139 $ mgitstatus --flatten -c | grep Uncommitted
140 ./fboender/multi-git-status: Uncommitted changes
141 ./fboender/ansible-cmdb: Uncommitted changes
142 ./fboender/espy: Uncommitted changes
143
145 Copyright 2016-2022, Ferry Boender (et al).
146
147 Licensed under the MIT license. For more information, see the LI‐
148 CENSE.txt file.
149
151 Ferry Boender.
152
153
154
155 Mar 2022 MGITSTATUS(1)