A shell script that prints out pretty git branch sync status reports
bill-auger 1a1042921d add tests for the tracking delimiter | 1 年之前 | |
---|---|---|
.gitignore | 4 年之前 | |
LICENSE | 8 年之前 | |
README.md | 1 年之前 | |
gbs-config.sh.inc.example | 4 年之前 | |
gbs-tests-constants.sh.inc | 1 年之前 | |
gbs-tests.sh | 1 年之前 | |
git-branch-status | 1 年之前 |
By default, the git-branch-status
command shows the divergence relationship between branches for which the upstream differs from it's local counterpart.
A number of command-line switches exist, selecting various reports that compare any or all local or remote branches.
USAGE:
git-branch-status
git-branch-status [ base-branch-name compare-branch-name ]
git-branch-status [ -a | --all ]
git-branch-status [ -b | --branch ] [ filter-branch-name ]
git-branch-status [ -c | --cleanup ]
git-branch-status [ -d | --dates ]
git-branch-status [ -h | --help ]
git-branch-status [ -l | --local ]
git-branch-status [ -r | --remotes ]
git-branch-status [ -v | --verbose ]
EXAMPLES:
# show only branches for which upstream differs from local
$ git-branch-status
| collab-branch | (behind 1)-|-(ahead 2) | origin/collab-branch |
| feature-branch | (even) -|-(ahead 2) | origin/feature-branch |
| master | (behind 1)-|-(even) | origin/master |
# compare two arbitrary branches - local or remote
$ git-branch-status a-branch another-branch
| a-branch | (even) | (even) | another-branch |
$ git-branch-status a-branch a-remote/any-branch
| a-branch | (even) | (even) | a-remote/any-branch |
$ git-branch-status a-remote/any-branch a-branch
| a-remote/any-branch | (behind 1) | (even) | a-branch |
$ git-branch-status a-remote/any-branch other-remote/other-branch
| a-remote/any-branch | (behind 1) | (even) | other-remote/other-branch |
# show all branches - local and remote, regardless of state or relationship
$ git-branch-status -a
$ git-branch-status --all
*| master | (even) -|-(ahead 1) | origin/master |
| tracked-branch | (even) -|-(even) | origin/tracked-branch |
| untracked-branch | n/a | n/a | origin/untracked-branch |
| local-branch | n/a | n/a | (no upstream) |
| master | (behind 1) | (ahead 1) | a-peer/master |
| tracked-peer-branch | n/a -|-n/a | a-peer/tracked-branch |
| (no local) | n/a | n/a | a-peer/unused-branch |
# show the current branch
$ git-branch-status -b
$ git-branch-status --branch
*| current-branch | (even)-|-(ahead 2) | origin/current-branch |
# show a specific branch
$ git-branch-status specific-branch
$ git-branch-status -b specific-branch
$ git-branch-status --branch specific-branch
| specific-branch | (even)-|-(ahead 2) | origin/specific-branch |
# compare a specific local branch against all other local branches
$ git-branch-status -c master
$ git-branch-status --cleanup master
*| master | (behind 2)-|-(even) | master |
| merged-into-master | (even) | (even) | master |
| wip | (even) | (ahead 1) | master |
branch: merged-into-master is identical to: master
Delete merged-into-master? [y/N]
# show the timestamp of each out-of-sync local ref
$ git-branch-status -d
$ git-branch-status --dates
| 1999-12-30 master | (even) -|-(even) | 1999-12-30 origin/master |
| 1999-12-31 devel | (behind 2)-|-(even) | 2000-01-01 origin/devel |
# show the timestamp of arbitrary branch refs
$ git-branch-status -d a-branch another-branch
$ git-branch-status --dates a-branch another-branch
| 1999-12-31 a-branch | (even) | (even) | 2000-01-01 another-branch |
# print this usage message
$ git-branch-status -h
$ git-branch-status --help
"prints this usage message"
# show all local branches - including those synchronized or non-tracking
$ git-branch-status -l
$ git-branch-status --local
*| master | (even)-|-(ahead 1) | origin/master |
| tracked-branch | (even)-|-(even) | origin/tracked-branch |
| local-branch | n/a | n/a | (no upstream) |
# show all remote branches - including those not checked-out
$ git-branch-status -r
$ git-branch-status --remotes
| master | (behind 1) | (even) | a-remote/master |
| (no local) | n/a | n/a | a-remote/unused-branch |
# show all branches with timestamps (like -a -d)
$ git-branch-status -v
$ git-branch-status --verbose
| 1999-12-31 master: initial commit | (behind 1)-|-(even) | 2000-01-01 origin/master: initial commit |
| 1999-12-31 feature: bump version | (even) -|-(even) | 2000-01-01 origin/feature: bump version |
*| 1999-12-31 local-wip: a wip | n/a | n/a | (no upstream) |
NOTE: please direct bug reports, feature requests, or PRs to one of the upstream repos: