patches) use ``git diff --cached``. To see the diff between the
working tree and the index (i.e., uncollected patches) use just ``git
diff``. To see the diff between the working tree and the last commit
-(i.e., both collected and uncollected patches) use ``git diff HEAD``.
+(i.e., both collected and uncollected patches) run ``git diff HEAD``.
See `WhatIsTheIndex
<https://git.wiki.kernel.org/index.php/WhatIsTheIndex>`_ and
Database maintenance
====================
-Git object database and other files/directories under .git require
+Git object database and other files/directories under ``.git`` require
periodic maintenance and cleanup. For example, commit editing left
unreferenced objects (dangling objects, in git terminology) and these
objects should be pruned to avoid collecting cruft in the DB. The
-command ``git gc`` can be used for maintenance. Git runs ``git gc
---auto`` as a part of some commands to do quick maintenance. Users are
-recommended to run ``git gc --aggressive`` from time to time; ``git
-help gc`` recommends to run it every few hundred changesets; for more
-intensive projects it should be something like once a week and less
-frequent (biweekly or monthly) for lesser active projects.
+command ``git gc`` is used for maintenance. Git automatically runs
+``git gc --auto`` as a part of some commands to do quick maintenance.
+Users are recommended to run ``git gc --aggressive`` from time to
+time; ``git help gc`` recommends to run it every few hundred
+changesets; for more intensive projects it should be something like
+once a week and less frequently (biweekly or monthly) for lesser
+active projects.
``git gc --aggressive`` not only removes dangling objects, it also
-repacks object database into indexed and better optimized pack(s).
-Another way to do it is to run ``git repack``.
+repacks object database into indexed and better optimized pack(s); it
+also packs symbolic references (branches and tags). Another way to do
+it is to run ``git repack``.
There is a well-known `message
<https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html>`_ from Linus
for explanation on the effects of these parameters.
From time to time run ``git fsck [--strict]`` to verify integrity of
-the database.
+the database. ``git fsck`` could report dangling objects; that's not
+an error, just a reminder to perform regular maintenance.
Tips and tricks