X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=pep-git.txt;h=fcdfc633980e8d538bcdc2cf21273e8782ae17fa;hb=6236c4807648a130f54fb2f01fc458e80b274d47;hp=3158a4a8d6f066ff078c9532aafbf96029d354db;hpb=4b2561295c5fe5dd50e6ecdee3c45da397866f95;p=git-wiki.git diff --git a/pep-git.txt b/pep-git.txt index 3158a4a..fcdfc63 100644 --- a/pep-git.txt +++ b/pep-git.txt @@ -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 -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. @@ -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 -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 @@ -258,6 +258,10 @@ or even $ 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 '''' @@ -268,9 +272,8 @@ run $ 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 @@ -297,6 +300,21 @@ or even $ 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 @@ -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 -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 @@ -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 -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, @@ -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 -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. @@ -517,8 +536,11 @@ Database maintenance ==================== TODO: dangling objects, git gc, git repack. + https://gcc.gnu.org/ml/gcc/2007-12/msg00165.html +http://vcscompare.blogspot.ru/2008/06/git-repack-parameters.html + Tips and tricks ===============