Marcx
Marcx

Reputation: 6836

How to properly use Git and branches

I'm kind of new to version control with Git. I read this guide and am following the basic approach that is shown in the diagram here. Still, I have some doubts about how to use Git branches to separate the development of new features from existing code.

Here is an example. Suppose that at the start, my repository contains the following two main branches:

When I need to develop new features or modules, I create branches from Develop and start the new code projects there. For example, I make three new branches to add features related to Sun, Star, and SuperNova. Now, my repository contains five branches:

For Release 1.0.1, I want to include the the Sun and Star modules, but not SuperNova. So, I merge them with Develop and then merge Develop with the Release:

  1. Merge NewModule_Sun into Develop
  2. Merge NewModule_Star into Develop
  3. Merge Develop into Master (release 1.0.1)

The Develop branch needs to be kept permanently, but the Sun and Star branches are no longer needed. They get deleted:

  1. Delete the NewModule_Sun branch
  2. Delete the NewModule_Star branch

After these changes my repository contains the following three branches:

==

Firstly, am I using Git branches correctly?

Secondly, I reviewed the history of the final Develop branch, and it seems that I have lost some information on the NewModules. Is that normal? And, is it possible to transfer all the history information to the Develop branch?

Upvotes: 38

Views: 28550

Answers (2)

Simon Featherstone
Simon Featherstone

Reputation: 1796

I suggest you read A successful Git branching model which defines a good pattern for Git branching.

I have found that I keep development branches for a period, until time renders the change history you made in those revisions not worth keeping (about six months), and then delete them.

Upvotes: 13

ralphtheninja
ralphtheninja

Reputation: 133138

Am I doing a propery use of git?

Yes the workflow that you describe is pretty much standard workflow. You create some branch, you work on it and when you're done you merge it and remove the not needed branch (unless you are going to continue developing on that branch).

After removing a branch, viewing the history it seems to me that I have lost every information about the branch itself... is that normal?

Yes this is normal.

is it possible to remove a branch but leaving the history information unbroken?

Not sure what you mean here. As long as you have merged the branch before deleting it, the history is still there. You just merged it into another branch and the history can be seen on that branch. There is no way to know when a branch was deleted if that's what you are asking for.

Upvotes: 25

Related Questions