Day 16 of 90 Days of DevOps Challenge: Understanding .gitignore and Branching Strategy in Git Projects

Vaishnavi DVaishnavi D
3 min read

When working on real-world software projects, efficient code management is crucial. Git, a distributed version control system, plays a key role in this. Two important aspects that help maintain clean, collaborative repositories are the .gitignore file and a clear project branching strategy. Let's explore both.

What is .gitignore ?

The .gitignore file tells Git which files or directories to ignore in a project. This is important because:

  • Git repositories are primarily meant to store source code, not compiled bytecode or temporary files.

  • Committing unnecessary files (like logs, caches, or build artifacts) can clutter the repository and confuse.

For example, in a Maven project, the target/ folder is automatically generated when you build the project using:

mvn clean package

This folder contains compiled classes and packaged .jar or .war files, which should not be committed to the repository. To avoid this, you simply add it to your .gitignore:

# .gitignore
/target/

Other common files/folders to ignore:

*.class
*.log
*.env
node_modules/
.DS_Store

This helps keep the repository clean and focused only on the essential code.

Why Do We Use Git Branches?

In any collaborative software development project, multiple teams might be working in parallel:

  • Bug fixes

  • New features

  • R&D experiments

  • Client change requests

Managing all these changes directly on a single branch would quickly become chaotic. That’s where branches come in. Branches allow multiple isolated versions of the codebase to exist within the same repository.

Common Git Branches in Real Projects

  1. main (or master) – The production-ready branch containing stable code.

  2. develop – Where the latest development changes live before merging to main.

  3. feature/* – Used for new enhancements or features.

  4. bugfix/* or qa – Dedicated to fixing issues or testing phases.

  5. uat – User acceptance testing branch.

  6. release/* – Final preparation for production releases.

  7. research – For experiments, R&D, or prototype work.

Teams can work independently on different branches without affecting each other’s work. Once changes are tested and validated, they are merged into the main or develop branch.

Basic Git Branching Commands

git branch                # List all branches
git checkout <branch>     # Switch to a branch
git pull                  # Fetch and merge remote updates
git merge <branch>        # Merge a branch into the current branch
git rebase <branch>       # Reapply commits on top of another base tip

Pull Requests (PRs) are typically used to propose and review changes before merging branches via the Git platform (like GitHub, GitLab, etc.).

Branching Strategy in a Project

A branching strategy defines how and when branches are created, used, and merged. It ensures that:

  • Development is streamlined.

  • Code is tested before deployment.

  • Teams are not overwriting each other's work.

Typical strategy:

  • main: Production code only

  • develop: Latest development snapshot

  • feature/*: Each feature has its own branch

  • qa: Used by QA team to test bug fixes

  • release: Final staging before pushing to main

  • research: Non-critical, experimental changes

Example branching structure:

main
 └─ develop
      ├─ feature/login-auth
      ├─ feature/payment-api
      ├─ bugfix/cart-issue
      └─ release/v1.0.0

Final Thoughts

Whether you're a solo developer or part of a large team, using .gitignore wisely and following a robust branching strategy can vastly improve your development workflow. It helps avoid unnecessary merge conflicts, keeps your repository clean, and ensures smoother collaboration.

I'm learning to start small, define a branching model that fits the team and stick to it. Turns out, being consistent with Git practices is key for efficient version control and setting the stage for a smooth CI/CD pipeline in DevOps.

Happy coding!

0
Subscribe to my newsletter

Read articles from Vaishnavi D directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Vaishnavi D
Vaishnavi D