]> git.phdru.name Git - git-wiki.git/blobdiff - pep-git.txt
Warn against removing published tags
[git-wiki.git] / pep-git.txt
index 3158a4a8d6f066ff078c9532aafbf96029d354db..fcdfc633980e8d538bcdc2cf21273e8782ae17fa 100644 (file)
@@ -142,9 +142,9 @@ Branches and branches
 Git terminology can be a bit misleading. Take, for example, the term
 "branch". In git it has two meanings. A branch is a directed line of
 commits (possibly with merges). And a branch is a label or a pointer
 Git terminology can be a bit misleading. Take, for example, the term
 "branch". In git it has two meanings. A branch is a directed line of
 commits (possibly with merges). And a branch is a label or a pointer
-assigned to a line of commits. It is important to differentiate when
-you talk about commits and when about their labels. Lines of commits
-are by itself unnamed and are usually only lengthening and merging.
+assigned to a line of commits. It is important to distinguish when you
+talk about commits and when about their labels. Lines of commits are
+by itself unnamed and are usually only lengthening and merging.
 Labels, on the other hand, can be created, moved, renamed and deleted
 freely.
 
 Labels, on the other hand, can be created, moved, renamed and deleted
 freely.
 
@@ -200,8 +200,8 @@ 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
 
 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 pointer).
+hash) of the head commit in file .git/FETCH_HEAD and
+updates remote-tracking branch.
 
 The second command fetches commits from the named BRANCH in the REMOTE
 repository that are not in your repository and updates both the local
 
 The second command fetches commits from the named BRANCH in the REMOTE
 repository that are not in your repository and updates both the local
@@ -258,6 +258,10 @@ or even
 
     $ git pull
 
 
     $ git pull
 
+Default remote repository for fetching/pulling is origin. Default set
+of references to fetch is calculated using matching algorithm: git
+fetches all branches having the same name on both ends.
+
 Push
 ''''
 
 Push
 ''''
 
@@ -268,9 +272,8 @@ run
 
     $ git push origin v1 v2
 
 
     $ git push origin v1 v2
 
-git guesses (knowing upstream remote branches) that you really want
-
-::
+git pushes local v1 to remote v1 and local v2 to remote v2. The same
+as::
 
     $ git push origin v1:v1 v2:v2
 
 
     $ git push origin v1:v1 v2:v2
 
@@ -297,6 +300,21 @@ or even
 
     $ git push
 
 
     $ git push
 
+Default remote repository for pushing is origin. Default set
+of references to push in git before 2.0 is calculated using matching
+algorithm: git pushes all branches having the same name on both ends.
+Default set of references to push in git 2.0+ is calculated using
+simple algorithm: git pushes the current branch back to its
+@{upstream}.
+
+To configure git before 2.0 to the new behaviour run::
+
+$ git config push.default simple
+
+To configure git 2.0+ to the old behaviour run::
+
+$ git config push.default matching
+
 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
 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
@@ -329,7 +347,8 @@ pushed). To push tags list them explicitly::
     $ git push origin tag 1.4.2
     $ git push origin v1 v2 tag 2.1.7
 
     $ 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.
+Don't move tags with ``git tag -f`` or remove tags with ``git tag -d``
+after they have been published.
 
 
 Commit editing and caveats
 
 
 Commit editing and caveats
@@ -384,7 +403,7 @@ file(s) to that one of a commit. Like this::
     git checkout HEAD~ README
 
 The commands restores the contents of README file to the last but one
     git checkout HEAD~ README
 
 The commands restores the contents of README file to the last but one
-commit in the current branch. By default a commit ID is simple HEAD;
+commit in the current branch. By default a commit ID is simply HEAD;
 i.e. ``git checkout README`` restores README to the latest commit.
 
 (Do not use ``git checkout`` to view a content of a file in a commit,
 i.e. ``git checkout README`` restores README to the latest commit.
 
 (Do not use ``git checkout`` to view a content of a file in a commit,
@@ -393,7 +412,7 @@ use ``git cat-file -p``; e.g. ``git cat-file -p HEAD~:path/to/README``).
 ``git reset`` moves the head of the current branch. The head can be
 moved to point to any commit but it's often used to remove a commit or
 a few (preferably, non-pushed ones) from the top of the branch - that
 ``git reset`` moves the head of the current branch. The head can be
 moved to point to any commit but it's often used to remove a commit or
 a few (preferably, non-pushed ones) from the top of the branch - that
-is, to move the branch backward in order to undo a few non-pushed
+is, to move the branch backward in order to undo a few (non-pushed)
 commits.
 
 ``git reset`` has three modes of operation - soft, hard and mixed.
 commits.
 
 ``git reset`` has three modes of operation - soft, hard and mixed.
@@ -517,8 +536,11 @@ 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
 
 https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html
 
+http://vcscompare.blogspot.ru/2008/06/git-repack-parameters.html
+
 
 Tips and tricks
 ===============
 
 Tips and tricks
 ===============