---
title: Working with Git
description: git overview
image: https://www.boulderes.com/hubfs/social-suggested-images/modular_repositories_with_git-1.jpeg
---

# Working with Git

Beginner’s Dogma When working with git, the default work-flow is to use one master branch for everything. The integrity ...

[ Krithik Chandrashekar ](https://www.boulderes.com/resource-library/author/krithik-chandrashekar)

 Apr 18, 2017

---

# **Beginner’s Dogma**

When working with git, the default work-flow is to use one master branch for everything. The integrity of local development keeps the master branch clean, which means it is assumed that before a push is made to the master branch everything should be in working condition. Another alternative that is commonly used is to make the master branch a work in progress that may or may not be broken (during development) at each commit and have tags when the current HEAD of the master is identified as significant enough for a “release*”*.

There are some severe shortcomings in the above two approaches:

- Collaboration is nearly impossible.  There’s no way to be explicitly aware of what feature or bug-fix an individual is working.  Also, working in parallel on two separate features is not possible because every commit can be shuffled with other commits from one or more different collaborator.
- No visibility of what features are being developed means no qualitative or quantitative measure of the progress of the development.
- Integrity of the master branch is not guaranteed
- Rollback of features to a commit before a new feature is integrated is not easy unless the release tags had well incremented improvements

 

# **Feature Driven Development**

With this path, the master branch should always be clean and equipped to be “release-ready”. Development progresses by assigning each significant addition to the code to its own branch and then merged to master.

To begin with:

1. Create a git repo with the default branch as master, master is also protected
2. Add a readme and commit to **master**
3. Create a feature branch called **setup**
4. Add the least possible code necessary to begin development for individual features, this would include: 
     - Start with an internal template
     - Tailor the template to a specific project
     - Include any required libraries
5. The **setup **branch can then be pushed to a remote origin which can then be reviewed by teammate
6. The reviewer can then merge the code to master when it is deemed ready

 

![modular_repositories_with_git.jpeg](https://www.boulderes.com/hs-fs/hubfs/modular_repositories_with_git.jpeg?width=385&height=502&name=modular_repositories_with_git.jpeg)

 

For a more detailed reference check out [GitLab Workflow](https://about.gitlab.com/2014/09/29/gitlab-flow/) and [GitHub](https://guides.github.com/introduction/flow/)

 

 

 Share on :   <https://twitter.com/intent/tweet?text=I+found+this+interesting+blog+post&url=https://www.boulderes.com/resource-library/working-with-git> <http://www.facebook.com/share.php?u=https://www.boulderes.com/resource-library/working-with-git> <http://www.linkedin.com/shareArticle?mini=true&url=https://www.boulderes.com/resource-library/working-with-git>

## Similar posts

<https://www.boulderes.com/resource-library/the-system-is-down>

Systems Engineering

##### [The System Is Down](https://www.boulderes.com/resource-library/the-system-is-down)

 Kevin McWilliams  Mar 21, 2017

<https://www.boulderes.com/resource-library/manual-visual-inspection-is-vital>

Testing

##### [Why Manual Visual Inspection is a Vital Method of Defect Detection](https://www.boulderes.com/resource-library/manual-visual-inspection-is-vital)

 Emily Baade  Sep 23, 2020

<https://www.boulderes.com/resource-library/scaling_up_nuances_in_die_cut_design>

DFM

##### [Scaling Up and the Nuances in Die Cut Design](https://www.boulderes.com/resource-library/scaling_up_nuances_in_die_cut_design)

 Mikaela Juzswik  Dec 10, 2020

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Krithik Chandrashekar",
    "url" : "https://www.boulderes.com/resource-library/author/krithik-chandrashekar"
  },
  "dateModified" : "2026-06-11T20:54:35.131Z",
  "datePublished" : "2017-04-18T21:01:00.000Z",
  "headline" : "Working with Git",
  "image" : [ "https://www.boulderes.com/hubfs/social-suggested-images/modular_repositories_with_git-1.jpeg" ],
  "mainEntityOfPage" : {
    "@id" : "https://www.boulderes.com/resource-library/working-with-git",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://www.boulderes.com/hubfs/bes-logo-on-dark-web.png"
    },
    "name" : "Boulder Engineering Studio"
  }
}
```