X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=pep-git.txt;h=1d1664044e4616e6fd2640e87cfc3c20f759a71a;hb=97f3e523886fffbea92e87a78b9e7ac1ceb9a94c;hp=6563191dade96ec1b993efc880445cfa6b1f589d;hpb=b0b8875db65efcdc065f1fec308a2c4fe147cec4;p=git-wiki.git diff --git a/pep-git.txt b/pep-git.txt index 6563191..1d16640 100644 --- a/pep-git.txt +++ b/pep-git.txt @@ -651,7 +651,7 @@ new (untracked) files. To simplify committing in case you just want to commit everything without reviewing run ``git commit --all`` (or just ``-a``) - the command adds every changed tracked file to the index and then commit. To commit a file or files regardless of patches collected -in the index run ``git commit [--only] -- $FILE...``. +in the index run ``git commit [--only|-o] -- $FILE...``. To add hunks of patches to the index use ``git add --patch`` (or just ``-p``). To remove collected files from the index use ``git reset HEAD @@ -680,11 +680,35 @@ https://git-scm.com/book/en/Git-Tools-Rerere Database maintenance ==================== -TODO: dangling objects, git gc, git repack. - -https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html - -http://vcscompare.blogspot.ru/2008/06/git-repack-parameters.html +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. + +``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``. + +There is a well-known `message +`_ from Linus +Torvalds regarding "stupidity" of ``git gc --aggressive``. The message +can safely be ignored now. It is old and outdated, ``git gc +--aggressive`` became much better since that time. + +For those who still prefer ``git repack`` over ``git gc --aggressive`` +the recommended parameters are ``git repack -a -d -f --depth=20 +--window=250``. See `this detailed experiment +`_ +for explanation on the effects of these parameters. + +From time to time run ``git fsck [--strict]`` to verify integrity of +the database. Tips and tricks