]> git.phdru.name Git - git-wiki.git/blobdiff - pep-git.txt
Add an URL for message from Linus on git gc
[git-wiki.git] / pep-git.txt
index a576f3ba4738858e92f95848c42643e715c0acec..6272b08f8042abdc30a7b49171fa6e100286a869 100644 (file)
@@ -45,13 +45,13 @@ Git Tutorial: `part 1
 `Git workflows
 <https://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html>`_.
 
 `Git workflows
 <https://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html>`_.
 
+Advanced documentation
+----------------------
+
 `Git Magic
 <http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html>`_,
 also with a number of translations.
 
 `Git Magic
 <http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html>`_,
 also with a number of translations.
 
-Advanced documentation
-----------------------
-
 `Pro Git <https://git-scm.com/book>`_. The Book about git. Buy it at
 Amazon or download in PDF, mobi, or ePub form. Has translations to
 many different languages. Download Russian translation from `GArik
 `Pro Git <https://git-scm.com/book>`_. The Book about git. Buy it at
 Amazon or download in PDF, mobi, or ePub form. Has translations to
 many different languages. Download Russian translation from `GArik
@@ -118,10 +118,15 @@ done something like that::
     $ cd python
     $ git branch v1 origin/v1
 
     $ cd python
     $ git branch v1 origin/v1
 
+The first command clones remote repository into local directory
+`python``, creates a new local branch v2, sets remotes/origin/v2 as
+its upstream remote branch and checks it out into the working
+directory.
+
 The last command creates a new local branch v1 and sets
 remotes/origin/v1 as its upstream remote branch.
 
 The last command creates a new local branch v1 and sets
 remotes/origin/v1 as its upstream remote branch.
 
-The same result can achieved with commands::
+The same result can be achieved with commands::
 
     $ git clone -b v1 http://git.python.org/python.git
     $ cd python
 
     $ git clone -b v1 http://git.python.org/python.git
     $ cd python
@@ -219,15 +224,15 @@ is equivalent to
 ::
 
     $ git fetch REMOTE BRANCH
 ::
 
     $ git fetch REMOTE BRANCH
-    $ git merge FETCH_HEAD # FETCH_HEAD is a literal here
+    $ git merge FETCH_HEAD  # FETCH_HEAD is a literal here
 
 Certainly, BRANCH in that case should be your current branch. If you
 want to merge a different branch into your current branch first update
 that non-current branch and then merge::
 
 
 Certainly, BRANCH in that case should be your current branch. If you
 want to merge a different branch into your current branch first update
 that non-current branch and then merge::
 
-    $ git fetch origin v1:v1 # Update v1
-    $ git pull --rebase origin v2 # Update the current branch v2 using
-                                  # rebase instead of merge
+    $ git fetch origin v1:v1  # Update v1
+    $ git pull --rebase origin v2  # Update the current branch v2 using
+                                   # rebase instead of merge
     $ git merge v1
 
 If you have not yet pushed commits on ``v1``, though, the scenario has
     $ git merge v1
 
 If you have not yet pushed commits on ``v1``, though, the scenario has
@@ -380,7 +385,7 @@ TODO: describe undo strategies: git reset, git revert, git checkout,
 git reflog. "Commit early, commit often".
 
 How to undo a merge
 git reflog. "Commit early, commit often".
 
 How to undo a merge
-https://kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html
+https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html
 
 
 Merge or rebase?
 
 
 Merge or rebase?
@@ -408,6 +413,7 @@ and configure rebase for existing branches::
 
 For example::
 
 
 For example::
 
+    $ git config branch.v1.rebase true
     $ git config branch.v2.rebase true
 
 After that ``git pull origin v2`` becomes equivalent to ``git pull
     $ git config branch.v2.rebase true
 
 After that ``git pull origin v2`` becomes equivalent to ``git pull
@@ -416,25 +422,25 @@ After that ``git pull origin v2`` becomes equivalent to ``git pull
 In case when merge is preferred it is recommended to create new
 commits in a separate feature or topic branch while using rebase to
 update the mainline branch. When the topic branch is ready merge it
 In case when merge is preferred it is recommended to create new
 commits in a separate feature or topic branch while using rebase to
 update the mainline branch. When the topic branch is ready merge it
-into mainline. To avoid a tedious task of resolving conflicts you can
-merge the topic branch to the mainline from time to time and switch
-back to the topic branch to continue working on it. The entire
-workflow would be something like::
+into mainline. To avoid a tedious task of resolving large number of
+conflicts at once you can merge the topic branch to the mainline from
+time to time and switch back to the topic branch to continue working
+on it. The entire workflow would be something like::
 
 
-    $ git checkout -b issue-42 # create and switch to a new branch
+    $ git checkout -b issue-42  # create and switch to a new branch
         ...edit/test/commit...
     $ git checkout v2
         ...edit/test/commit...
     $ git checkout v2
-    $ git pull --rebase origin v2 # update v2 from the upstream
+    $ git pull --rebase origin v2  # update v2 from the upstream
     $ git merge issue-42
     $ git merge issue-42
-    $ git branch -d issue-42 # delete the topic branch
+    $ git branch -d issue-42  # delete the topic branch
     $ git push origin v2
 
 When the topic branch is deleted only the label is removed, commits
 are stayed in the database, they are now merged into v2::
 
     $ git push origin v2
 
 When the topic branch is deleted only the label is removed, commits
 are stayed in the database, they are now merged into v2::
 
-    --o--o--o--o--o--o-M-<v2 - it is the mainline branch
-            \         /
-             --*--*--*       - it is the topic branch, now unnamed
+    o--o--o--o--o--M--< v2 - it is the mainline branch
+        \         /
+         --*--*--*         - it is the topic branch, now unnamed
 
 The topic branch is deleted to avoid cluttering branch namespace with
 small topic branches. Information on what issue was fixed or what
 
 The topic branch is deleted to avoid cluttering branch namespace with
 small topic branches. Information on what issue was fixed or what
@@ -447,7 +453,7 @@ Null-merges
 Git has a builtin strategy for what Python core developers call
 "null-merge"::
 
 Git has a builtin strategy for what Python core developers call
 "null-merge"::
 
-    $ git merge -s ours v1 # null-merge v1 into v2
+    $ git merge -s ours v1  # null-merge v1 into v2
 
 
 ReReRe
 
 
 ReReRe
@@ -485,6 +491,7 @@ Database maintenance
 ====================
 
 TODO: dangling objects, git gc, git repack.
 ====================
 
 TODO: dangling objects, git gc, git repack.
+https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html
 
 
 Tips and tricks
 
 
 Tips and tricks