Git Branches


Understanding Branches in Git

A branch in Git represents an independent line of development in a repository. It allows teams to work on features or fixes without disturbing the primary codebase.


Why Use Branches?

Imagine working on a major project where a design update is needed. Without Git, you’d need to manually duplicate relevant files, ensure dependencies are intact, and manage multiple versions—resulting in a chaotic workflow.

With Git, this process becomes streamlined:

  • Create a new branch (e.g., new-design). Modify files without affecting the primary branch.
  • Encounter a critical bug? Initiate a separate branch (bug-fix), resolve the issue, and merge it into the main branch.
  • Resume work on new-design, merge when ready, ensuring all updates are intact.

Branches facilitate seamless context switching, allowing independent work on multiple tasks simultaneously.


Creating a Git Branch

Suppose you’re introducing a new feature to index.html. To avoid disrupting the main repository, generate a branch:

git branch feature-images 

Verify creation:

git branch    
      feature-images   
* master   

The asterisk (*) highlights the active branch, still on master. Switch to feature-images:

git checkout feature-images   

Now, modifications are isolated within feature-images, safeguarding the primary branch.


Making Changes

After switching branches, edits can be made. Assume you add an image (hello_world.jpg) and update index.html:

<!DOCTYPE html> 
<html> 
<head>   
        <title>Welcome</title>   
        <link rel="stylesheet" href="style.css">
</head> 
<body>  
        <h1>Greetings!</h1>   
        <div><img src="hello_world.jpg" alt="View from Space" style="width:100%; max-width:960px"></div>   
        <p>Exploring Git branching!</p> 
</body> 
</html> 

Check the status:

git status   

This will display:

  • Modified files (e.g., index.html).
  • Untracked files (hello_world.jpg).

Stage all changes:

git add --all   

Confirm the update:

git status   

Once satisfied, commit:

git commit -m "Added an image to index.html"   

Your branch now holds unique modifications distinct from master.


Switching Between Branches

Switching back to master:

git checkout master   

Listing directory contents reveals hello_world.jpg is absent, proving changes remain within feature-images.


Emergency Fixes

If an urgent fix is required while feature-images remains incomplete:

git checkout -b quick-fix   

After resolving the issue in index.html:

git add index.html   
Git commit -m "Resolved urgent bug in index.html"   

Merge it into master:

git checkout master   git merge quick-fix   

Now, master includes the fix without affecting feature-images.


Conclusion

Git’s branching mechanism fosters efficient development, enabling independent feature work, rapid bug resolution, and smooth collaboration. Merging branches integrates modifications seamlessly, ensuring projects evolve without unnecessary disruptions.

PreviousNext