]> git.phdru.name Git - git-wiki.git/blobdiff - pep-git.txt
Explain tricky options (git log -p3)
[git-wiki.git] / pep-git.txt
index 4684b1e739eb1859be92dda50b52e1aa382b5098..08880df1ab19290f79993c33774f683c7980266a 100644 (file)
@@ -674,7 +674,31 @@ Wiki.
 ReReRe
 ======
 
-https://git-scm.com/book/en/Git-Tools-Rerere
+Rerere is a mechanism that helps to resolve repeated merge conflicts.
+The most frequent source of recurring merge conflicts are topic
+branches that are merged into mainline and then the merge commits are
+removed; that's often performed to test the topic branches and train
+rerere; merge commits are removed to have clean history and finish a
+topic branch with only one last merge commit.
+
+Rerere works by remembering the states of tree before and after a
+successful commit. That way rerere can automatically resolve conflicts
+if they appear in the same files.
+
+Rerere can be used manually with ``git rerere`` command but most often
+it's used automatically. Enable rerere with these commands in a
+working tree::
+
+    $ git config rerere.enabled true
+    $ git config rerere.autoupdate true
+
+You don't need to turn rerere on globally - you don't want rerere in
+bare repositories or repositories without branches; you only need
+rerere in repos where you often perform merges and resolve merge
+conflicts.
+
+See `Rerere <https://git-scm.com/book/en/Git-Tools-Rerere>`_ in The
+Book.
 
 
 Database maintenance
@@ -710,16 +734,24 @@ the recommended parameters are ``git repack -a -d -f --depth=20
 for explanation on the effects of these parameters.
 
 From time to time run ``git fsck [--strict]`` to verify integrity of
-the database. ``git fsck`` could report dangling objects; that's not
-an error, just a reminder to perform regular maintenance.
+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
 ===============
 
-TODO: sticky options; example: git grep -O.
+Command-line options and arguments
+----------------------------------
 
-TODO: tricky options; example: git log -p3.
+`git help cli
+<https://www.kernel.org/pub/software/scm/git/docs/gitcli.html>`_
+recommends not to combine short options/flags. Most of the times it
+works: ``git commit -av`` works perfectly, but there are situations
+when it doesn't. E.g., ``git log -p -5`` cannot be combined as ``git
+log -p5``.
+
+TODO: sticky options; example: git grep -O.
 
 TODO: bash/zsh completion, bash/zsh prompt.
 https://git.kernel.org/cgit/git/git.git/tree/contrib/completion