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:
The Develop branch needs to be kept permanently, but the Sun
and Star
branches are no longer needed. They get deleted:
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?
Thank you!!
In Git, branches are a part of your everyday development process. Git branches are effectively a pointer to a snapshot of your changes. When you want to add a new feature or fix a bug—no matter how big or how small—you spawn a new branch to encapsulate your changes.
Build your strategy from these three concepts: Use feature branches for all new features and bug fixes. Merge feature branches into the main branch using pull requests. Keep a high quality, up-to-date main branch.
You can have many branches in your repository, but only one of these will be "checked out" as the working-tree so that you can work on it and make changes. git worktree adds the concept of additional working trees. This means you can have two (or more) branches checked-out at once.
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.
I suggest you read http://nvie.com/posts/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 6 months), and then delete them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With