]> git.phdru.name Git - git-wiki.git/blobdiff - pep-103.txt
PEP-8 recommends two spaces before inline comment
[git-wiki.git] / pep-103.txt
index d11403345a0d6bd24fc863992becc4ac7b907f23..eae4ff757681af75e11d5837e3b5753737edf71b 100644 (file)
@@ -532,11 +532,11 @@ For example, if you want to reset the branch ``master`` back to the
 original commit but preserve two commits created in the current branch
 do something like::
 
-    $ git branch save-master # create a new branch saving master
-    $ git reflog # find the original place of master
+    $ git branch save-master  # create a new branch saving master
+    $ git reflog  # find the original place of master
     $ git reset $COMMIT_ID
     $ git cherry-pick save-master~ save-master
-    $ git branch -D save-master # remove temporary branch
+    $ git branch -D save-master  # remove temporary branch
 
 
 git revert: revert a commit
@@ -714,6 +714,25 @@ command. For example::
 $ git check-attr -a -- \*.py
 
 
+Useful assets
+-------------
+
+`GitAlias <http://gitalias.com/>`_ (`repository
+<https://github.com/GitAlias/gitalias>`_) is a big collection of
+aliases. A careful selection of aliases for frequently used commands
+could save you a lot of keystrokes!
+
+`GitIgnore <https://www.gitignore.io/>`_ and
+https://github.com/github/gitignore are collections of ``.gitignore``
+files for all kinds of IDEs and programming languages. Python
+included!
+
+`pre-commit <http://pre-commit.com/>`_ (`repositories
+<https://github.com/pre-commit>`_) is a framework for managing and
+maintaining multi-language pre-commit hooks. The framework is written
+in Python and has a lot of plugins for many programming languages.
+
+
 Advanced topics
 ===============
 
@@ -753,8 +772,36 @@ See `WhatIsTheIndex
 Wiki.
 
 
+Root
+----
+
+Git switches to the root (top-level directory of the project where
+``.git`` subdirectory exists) before running any command. Git
+remembers though the directory that was current before the switch.
+Some programs take into account the current directory. E.g., ``git
+status`` shows file paths of changed and unknown files relative to the
+current directory; ``git grep`` searches below the current directory;
+``git apply`` applies only those hunks from the patch that touch files
+below the current directory.
+
+But most commands run from the root and ignore the current directory.
+Imagine, for example, that you have two work trees, one for the branch
+``v1`` and the other for ``master``. If you want to merge ``v1`` from
+a subdirectory inside the second work tree you must write commands as
+if you're in the top-level dir. Let take two work trees,
+``project-v1`` and ``project``, for example::
+
+    $ cd project/subdirectory
+    $ git fetch ../project-v1 v1:v1
+    $ git merge v1
+
+Please note the path in ``git fetch ../project-v1 v1:v1`` is
+``../project-v1`` and not ``../../project-v1`` despite the fact that
+we run the commands from a subdirectory, not from the root.
+
+
 ReReRe
-======
+------
 
 Rerere is a mechanism that helps to resolve repeated merge conflicts.
 The most frequent source of recurring merge conflicts are topic
@@ -783,7 +830,7 @@ Book.
 
 
 Database maintenance
-====================
+--------------------
 
 Git object database and other files/directories under ``.git`` require
 periodic maintenance and cleanup. For example, commit editing left
@@ -841,17 +888,17 @@ has an option ``-O`` that passes a list of names of the found files to
 a program; default program for ``-O`` is a pager (usually ``less``),
 but you can use your editor::
 
-    $ git grep -Ovim # but not -O vim
+    $ git grep -Ovim  # but not -O vim
 
 BTW, if git is instructed to use ``less`` as the pager (i.e., if pager
 is not configured in git at all it uses ``less`` by default, or if it
 gets ``less`` from GIT_PAGER or PAGER environment variables, or if it
-was configured with ``git config --global core.pager less``, or
+was configured with ``git config [--global] core.pager less``, or
 ``less`` is used in the command ``git grep -Oless``) ``git grep``
 passes ``+/$pattern`` option to ``less`` which is quite convenient.
 Unfortunately, ``git grep`` doesn't pass the pattern if the pager is
 not exactly ``less``, even if it's ``less`` with parameters (something
-like ``git config --global core.pager less -FRSXgimq``); fortunately,
+like ``git config [--global] core.pager less -FRSXgimq``); fortunately,
 ``git grep -Oless`` always passes the pattern.