You really should push only to bare repositories. For non-bare
repositories git prefers pull-based workflow.
+When you want to deploy code on a remote host and can only use push
+(because your workstation is behind a firewall and you cannot pull
+from it) you do that in two steps using two repositories: you push
+from the workstation to a bare repo on the remote host, ssh to the
+remote host and pull from the bare repo to a non-bare deployment repo.
+
Tags
''''
``git fetch --tags origin``. To fetch some specific tags fetch them
explicitly::
- $ git fetch origin tag NAME1 tag NAME2...
+ $ git fetch origin tag TAG1 tag TAG2...
For example::
$ git push origin tag 1.4.2
$ git push origin v1 v2 tag 2.1.7
+Don't move tags with ``git tag -f`` after they have been published.
+
Commit editing and caveats
==========================
https://kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html
-Advanced topics
-===============
-
-Staging area
-------------
-
-Staging area aka index is a distinguishing feature of git. See
-`WhatIsTheIndex
-<https://git.wiki.kernel.org/index.php/WhatIsTheIndex>`_ and
-`IndexCommandQuickref
-<https://git.wiki.kernel.org/index.php/IndexCommandQuickref>`_ in Git
-Wiki.
-
-
Merge or rebase?
================
https://git-scm.com/book/en/Git-Tools-Rerere
+Advanced topics
+===============
+
+Staging area
+------------
+
+Staging area aka index is a distinguishing feature of git. See
+`WhatIsTheIndex
+<https://git.wiki.kernel.org/index.php/WhatIsTheIndex>`_ and
+`IndexCommandQuickref
+<https://git.wiki.kernel.org/index.php/IndexCommandQuickref>`_ in Git
+Wiki.
+
+
Advanced configuration
======================
Tips and tricks
===============
+TODO: sticky options; example: git grep -O.
+
TODO: bash/zsh completion, bash/zsh prompt.