mirror of
https://github.com/git/git.git
synced 2024-11-28 20:44:04 +08:00
a1db097e10
It's not immediately obvious why --disk-usage might be a useful thing. These examples show off a few of the real-world cases I've used it for. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
130 lines
3.1 KiB
Plaintext
130 lines
3.1 KiB
Plaintext
git-rev-list(1)
|
|
===============
|
|
|
|
NAME
|
|
----
|
|
git-rev-list - Lists commit objects in reverse chronological order
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git rev-list' [<options>] <commit>... [[--] <path>...]
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
|
|
:git-rev-list: 1
|
|
include::rev-list-description.txt[]
|
|
|
|
'rev-list' is a very essential Git command, since it
|
|
provides the ability to build and traverse commit ancestry graphs. For
|
|
this reason, it has a lot of different options that enables it to be
|
|
used by commands as different as 'git bisect' and
|
|
'git repack'.
|
|
|
|
OPTIONS
|
|
-------
|
|
|
|
:git-rev-list: 1
|
|
include::rev-list-options.txt[]
|
|
|
|
include::pretty-formats.txt[]
|
|
|
|
EXAMPLES
|
|
--------
|
|
|
|
* 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 linkgit:git-log[1]).
|
|
+
|
|
----------
|
|
git rev-list --format=medium HEAD
|
|
----------
|
|
|
|
* Format commits along with their diffs (see also the porcelain
|
|
linkgit: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
|
|
----------
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|