X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=pep-git.txt;h=6ed8bbaee8c84a8e0069952481ccb33b717a82eb;hb=e2139e1184b1b1368d6134ff71de15de424c2da2;hp=1b0f384a47f17f72ed3b6b0cf2ccf283d67aa5d8;hpb=b55f73c29a2e0ebe88ca2d4f5adea3118c6423e4;p=git-wiki.git diff --git a/pep-git.txt b/pep-git.txt index 1b0f384..6ed8bba 100644 --- a/pep-git.txt +++ b/pep-git.txt @@ -110,6 +110,54 @@ something like that:: $ git checkout -b v2 +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 chain of +commits (possible 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. Chains of commits +are unnamed and are usually only lengthening. Labels, on the other +hand, can be created, moved, renamed and deleted freely. + + +Remote repository and remote branches +===================================== + +Another example of misleading terminology. A remote repository is +really remote, you access it via network (well, a remote repository +can be on your local disk, but it's still remote because it's not the +current repo). + +Remote branches, on the other hand, are branches (pointers to commits) +in your local repository. They are there for git to remember what +branches and commits have been pulled from and pushed to what remote +repos (you can pull from and push to many remotes). + +To see the status of remote branches:: + + $ git branch -rv + +To see local and remote branches (and tags) pointing to commits run:: + + $ git log --decorate + +You never do your own development on remote branches. You create a +local branch that has a remote branch as an upstream and do +development on that local branch. On push git updates remote branches, +and on pull git updates remote branches and fast-forwards, merges or +rebases local branches. + +When you do an initial clone like this:: + + $ git clone -b v1 http://git.python.org/python.git + +git clones remote repository ``http://git.python.org/python.git`` to +directory ``python``, creates remote branches and checks out branch +``v1`` into the working directory. + + Commit editing and caveats ==========================