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