X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=pep-git.txt;h=624efb152c4e89da7ab04a5993e0dacb81b19cc9;hb=1cdc1923e156d5cd604f31220dc4d56f9ea28464;hp=43e8ddd63a408e6e01ecac5c2ef5dab9b1b7951a;hpb=aef095b9ca8c6fdc71be1b1d05dd28ceb672ab37;p=git-wiki.git diff --git a/pep-git.txt b/pep-git.txt index 43e8ddd..624efb1 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 @@ -662,7 +662,7 @@ To see the diff between the index and the last commit (i.e., collected 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 `_ and @@ -680,11 +680,38 @@ 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`` 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); it +also packs symbolic references (branches and tags). 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. ``git fsck`` may produce a list of dangling objects; +that's not an error, just a reminder to perform regular maintenance. Tips and tricks @@ -701,7 +728,8 @@ https://git.kernel.org/cgit/git/git.git/tree/contrib/completion git on server ============= -TODO: anonymous access; git over ssh; gitolite; gitweb; cgit; gitlab. +TODO: anonymous access (``git daemon``); git over ssh; gitolite; +gitweb; cgit; Kallithea; pagure; gogs and gitea; gitlab. http://gitolite.com/gitolite/index.html @@ -709,6 +737,15 @@ https://git.kernel.org/cgit/git/git.git/tree/gitweb http://git.zx2c4.com/cgit/ +https://kallithea-scm.org/ + +https://pagure.io/ + +http://gogs.io/ and http://gitea.io/ + +https://about.gitlab.com/ + + From Mercurial to git =====================