A Git branch is a pointer to a commit, allowing for diverging development paths, while a tag is a snapshot of a specific commit, often used for marking release points. You would use branches for ongoing development and tags for stable releases or milestones.
In depth
Branches in Git are created to enable parallel development. They point to the latest commit in a specific line of changes and allow developers to work on features or fixes without affecting the main codebase. When you're finished with a feature, you can merge the branch back into the main branch, preserving the history of changes made along the way. This is particularly useful in collaborative environments, as multiple team members can work on different branches concurrently without conflicts.
Tags, on the other hand, are used to mark specific points in your repository's history as important, typically for releases. Unlike branches, tags do not change over time; they are static references to specific commits. This makes tags ideal for marking versions of your software, as you can easily return to that point in history for deployment or review. Understanding the use and purpose of branches versus tags is essential for effective version control and collaborative workflows.
Example scenario
Imagine you’re working on a web application with a team. You create a branch called 'feature/login' to develop a new login functionality. Meanwhile, your colleague is working on a 'feature/dashboard' branch. Once your login feature is complete and tested, you merge it back into the 'main' branch. Later, when you’re ready to release the application, you tag the 'main' branch with a version number like 'v1.0' to mark this release point in history, allowing you and your team to easily reference it in the future.
Common mistakes
One common mistake developers make is using tags for ongoing work, thinking they can update them like branches. Tags are meant to be static and should represent a specific commit snapshot; altering them can confuse version tracking. Another mistake is forgetting to merge branches before tagging, which can lead to tagging an incomplete version of the codebase. This is problematic, especially when the team relies on that tag to release or deploy the software.
Follow-up questions
- Can you explain how you would resolve a merge conflict?
- What commands would you use to create a new branch from the main branch?
- How do you delete a branch in Git?
- Why is it important to regularly merge your branch with the main branch?

Want all 2,000 questions in one PDF?
- Short answers, in-depth explanations, common mistakes and follow-ups
- 89 topics, from Beginner to Architect, with a clickable contents list
- 226 extra questions that are not on this website
- Free Bonus Pack: 30-day study plan, behavioral questions, salary scripts
Includes 226 extra questions that are not on this site, plus a free Bonus Pack.
Get both books for $9.99 (save $2.99):
The material stays free to read online. This is the organised, offline, print-ready PDF edition. Secure payment by PayPal; your personal download link is emailed after payment is confirmed. Digital product, no shipping.