Branch management, merging, conflicts A "branch" is one of several histories of the project Each programmer works on her own branch In a single directory a programmer usually hosts many branches No branch makes any reference to other branches Branches are only compared when needed Every branch is independent, but when merging There is no such thing as a main branch, like in SVN Actually, the concept of trunk is not applicable at all Git only merges local branches or external patches Everything must be already committed No conflict can ever lead to information loss We have tools to move branches or change past history git rebase git rebase -i git commit --amend