You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.1 KiB
129 lines
3.1 KiB
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
|
|
|