Version Control Systems
This article is a conceptual guide to version control systems, covering exam-relevant topics, core components, and tags.
In a Nutshell
A version control system tracks every change with full traceability, enables parallel development through branches, and ensures accountability, recoverability, and team collaboration.
Core Concepts
- DVCS (Git): complete history available locally
- Centralized (Subversion): history primarily stored on the server
Key operations:
- Commit (atomic change)
- Branch (parallel development)
- Merge or Rebase (integration)
- Tag (mark releases)
Team governance:
- Pull Requests and code reviews
- Branch protection and status checks (CI)
- signed commits
Traceability: link issues in commits and PRs, track releases via tags and release notes.
Exam-Relevant Topics
- Git versus SVN comparison
- Commits contain metadata and hash
- Merge versus Rebase (history implications)
- Conflict resolution (three-way merge and testing)
- PRs and reviews for quality and compliance
- Releases: tags and semantic versioning
- Security: access control, signatures, audit trails
Core Components
- Repository (local and remote)
- Working tree and staging area
- Commits
- Branches
- Merge
- Rebase
- Tags
- Access control
- Hooks and automation
- CI/CD integration
Practical Example (Workflow)
1) Create feature branch
2) Commit changes (small, logical)
3) Rebase onto main, resolve conflicts
4) Open Pull Request, review, ensure CI passes
5) Merge
6) Create release tag (e.g., v1.4.0) with release notes
Advantages and Disadvantages
Advantages
- Full traceability and recovery
- concurrent development
- quality assurance through reviews and CI
Disadvantages
- learning curve (conflict resolution, rebase)
- governance overhead (policies and enforcement)
Common Exam Questions (Quick Answers)
- Merge versus Rebase? Merge preserves the branched history; Rebase rewrites the branch linearly.
- What are tags for? Making releases reproducible and trackable.
- Why use Pull Requests? Peer review plus automated checks.
- How do you link code to requirements? Include ticket IDs in commits and PRs, reference them in release notes.



