| 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 |