• Print the list of commits reachable from the current branch.
git rev-list HEAD
• Print the list of commits on this branch, but not present in
the upstream branch.
git rev-list @{upstream}..HEAD
• Format commits with their author and commit message (see also
the porcelain git-log(1)).
git rev-list --format=medium HEAD
• Format commits along with their diffs (see also the porcelain
git-log(1), which can do this in a single process).
git rev-list HEAD |
git diff-tree --stdin --format=medium -p
• Print the list of commits on the current branch that touched
any file in the Documentation
directory.
git rev-list HEAD -- Documentation/
• Print the list of commits authored by you in the past year,
on any branch, tag, or other ref.
git rev-list --author=you@example.com --since=1.year.ago --all
• Print the list of objects reachable from the current branch
(i.e., all commits and the blobs and trees they contain).
git rev-list --objects HEAD
• Compare the disk size of all reachable objects, versus those
reachable from reflogs, versus the total packed size. This
can tell you whether running git repack -ad
might reduce the
repository size (by dropping unreachable objects), and
whether expiring reflogs might help.
# reachable objects
git rev-list --disk-usage --objects --all
# plus reflogs
git rev-list --disk-usage --objects --all --reflog
# total disk size used
du -c .git/objects/pack/*.pack .git/objects/??/*
# alternative to du: add up "size" and "size-pack" fields
git count-objects -v
• Report the disk size of each branch, not including objects
used by the current branch. This can find outliers that are
contributing to a bloated repository size (e.g., because
somebody accidentally committed large build artifacts).
git for-each-ref --format='%(refname)' |
while read branch
do
size=$(git rev-list --disk-usage --objects HEAD..$branch)
echo "$size $branch"
done |
sort -n
• Compare the on-disk size of branches in one group of refs,
excluding another. If you co-mingle objects from multiple
remotes in a single repository, this can show which remotes
are contributing to the repository size (taking the size of
origin
as a baseline).
git rev-list --disk-usage --objects --remotes=$suspect --not --remotes=origin