Search code examples
gittortoisegit

Need help to understand a project git branch tree


I'm been assigned to a new project but i can't understand its current branch structure, below is the revision graph structure :

current revision tree

The project has been moved from cvs , on the far left there's the "arelease" node and i use TortoiseGit. Now the questions are :

  1. Is it correct to say that "fix_partitaiva_selezcliente" is the root node and master is one of its branches ?
  2. Where is develop been branched from ? fix_bug37189 ? master ? Is it a merge of the two ?
  3. where has porting_bs2ws_... been branched from?
  4. why fixbug_38795 box is red and it's pointed by origin/fixbug_38795?
  5. I have some problems to understand what's on master and what's on develop, there's a clearer view or console command to understand current branching?
  6. If i'm right saying it's a mess or is it some kind of git strategy? how could i put a bit of order in it? i mean i was thinking to use rebase to move some fix branches root to develop, do i have misunderstood the use of the rebase command?

This is a one person project, therefore there's no risk to break someone else work.


Solution

  • Remember that in git, branches do not have a parent-child relationship per se. That is, commits form a graph, but branches and tags are only "sticky notes" pointing to a commit.

    This means that a display like yours, with branch names and arrows pointing between them, is somewhere between useless and harmfull (for your understanding of the situation) as it suggests semantics where there are none.

    I'd go back to the roots (sic) and just use gitk or a similar tool to get a better understanding. It displays commits with branch labels, and you will see exactly what happened when (of course, there are plenty of tools which display "commits with added branching information", but gitk is available everywhere).