]> git.phdru.name Git - git-wiki.git/blobdiff - pep-git.txt
Reorder some sections
[git-wiki.git] / pep-git.txt
index 31dc43849ceb50b545de71963fd3a289466a0bc2..46b70537695ffa02a56352287cc4c3329b3a6222 100644 (file)
@@ -177,7 +177,7 @@ and
 The first command fetches commits from the named BRANCH in the REMOTE
 repository that are not in your repository and leaves the id (the
 hash) of the head commit in file .git/FETCH_HEAD. But it doesn't
-update any branch (doesn't move any label).
+update any branch (doesn't move any pointer).
 
 The second command fetches commits from the named BRANCH in the REMOTE
 repository that are not in your repository and updates both the local
@@ -207,6 +207,75 @@ that non-current branch and then merge::
                                   # rebase instead of merge
     $ git merge v1
 
+It is possible to configure git to make it fetch/pull a few branches
+or all branches at once, so you can simply run
+
+::
+
+    $ git pull origin
+
+or even
+
+::
+
+    $ git pull
+
+Push
+''''
+
+Pushing is a bit simpler. There is only one command ``push``. When you
+run
+
+::
+
+    $ git push origin v1 v2
+
+git guesses (knowing upstream remote branches) that you really want
+
+::
+
+    $ git push origin v1:v1 v2:v2
+
+Git pushes commits to the remote repo and updates remote branches. It
+is possible to configure git to make it push a few branches or all
+branches at once, so you can simply run
+
+::
+
+    $ git push origin
+
+or even
+
+::
+
+    $ git push
+
+Git refuses to push a branch if it's the current branch in the remote
+non-bare repository: git refuses to update remote working directory.
+You really should push only to bare repositories. For non-bare
+repositories git prefers pull-based workflow.
+
+Tags
+''''
+
+Git automatically fetches tags that point to commits being fetched
+during fetch/pull. To fetch all tags (and commits they point to) run
+``git fetch --tags origin``. To fetch some specific tags fetch them
+explicitly::
+
+    $ git fetch origin tag NAME1 tag NAME2...
+
+For example::
+
+    $ git fetch origin tag 1.4.2 tag 2.1.7
+
+Git doesn't automatically pushes tags. That allows you to have private
+tags (lightweight tags are also private for a repo, they cannot be
+pushed). To push tag(s) list them explicitly::
+
+    $ git push origin tag 1.4.2
+    $ git push origin v1 v2 tag 2.1.7
+
 
 Commit editing and caveats
 ==========================
@@ -274,15 +343,8 @@ Staging area aka index is a distinguishing feature of git. See
 Wiki.
 
 
-Advanced configuration
-======================
-
-Line endings
-------------
-
-Git has builtin mechanisms to handle line endings.
-
-TODO: describe crlf configuration and .gitattributes.
+Merge or rebase?
+================
 
 
 Null-merges
@@ -294,6 +356,23 @@ Git has a builtin strategy for what Python core developers call
     $ git merge -s ours v1 # null-merge v1 into v2
 
 
+ReReRe
+======
+
+https://git-scm.com/book/en/Git-Tools-Rerere
+
+
+Advanced configuration
+======================
+
+Line endings
+------------
+
+Git has builtin mechanisms to handle line endings.
+
+TODO: describe crlf configuration and .gitattributes.
+
+
 Database maintenance
 ====================