Table of contents
- Life Without Version Control
- The Types of Systems
- Git
- GitHub
- Conclusion
1 - Life Without Version Control
1.1 The Everyday Disaster Scenario
Imagine this familiar situation:
- You are working on a software development project
- You have a brilliant idea for a new feature
- You spend hours developing it
- You run thorough tests
- You deploy it successfully
- A few weeks go by...
- You develop new features
- Suddenly, a critical bug appears
- You want to go back to the previous version
- But it is impossible to find the old working version
- Result: wasted time, stress, and frustration
1.2 Why Use Version Control
The disaster scenario described above illustrates perfectly why we need a version control system. Here are the main benefits:
1.2.1 Complete Traceability
- Detailed history: Every change is recorded with metadata (author, date, description)
- Rollback possible: Ability to go back to any earlier version
- Understanding of the evolution: Clear visualization of how the project evolved
1.2.2 Effective Collaboration
- Parallel work: Several developers can work at the same time
- Intelligent merge: Changes can be merged automatically
- Conflict resolution: Tools to handle contradictory changes
1.2.3 Security and Backup
- Automatic backup: Every version is saved
- No data loss: Older versions remain accessible
- Easy restoration: Fast return to a stable version if something goes wrong
1.2.4 Improved Productivity
- Risk-free tests: Ability to experiment without fear
- Controlled deployment: Management of production versions
- Built-in documentation: The history serves as documentation
2 - The Types of Systems
There are three main types of version control systems, each with its advantages and drawbacks:
2.1 Local System (LVCS)
- Simple database on your local machine
- Change history stored locally
- No collaboration possible
- Risk of data loss
2.2 Centralized System (CVCS)
- Central server that stores the history
- Developers retrieve only the latest version
- Collaboration possible but limited
- Single point of failure
2.3 Distributed System (DVCS)
- Each developer has a complete copy
- Offline work possible
- Advanced collaboration
- High availability and security
2.4 Comparison of Systems
Here is a comparison table of the different systems:
| Characteristic | LVCS | CVCS | DVCS |
|---|
| Collaboration | No | Yes | Excellent |
| Offline Work | Yes | No | Yes |
| Security | Low | Medium | High |
| Complexity | Simple | Medium | High |
| Example | RCS | SVN | Git |
| Type | Tools | Characteristics | Used by |
|---|
| LVCS | • RCS • SCCS • Source Integrity | • Local storage only • Simple database • No network required | • Solo developers • Small projects • Embedded systems |
| CVCS | • SVN (Subversion) • CVS • Perforce • ClearCase | • Central server • Sequential version numbers • Requires a connection | • Traditional companies • Legacy projects • Localized teams |
| DVCS | • Git • Mercurial • Bazaar • Fossil | • Complete copies • Lightweight branches • Advanced merge | • Startups • Open Source • Distributed teams |
Historical note: The evolution of VCS reflects that of development practices, moving from simple local systems to distributed solutions suited to modern collaborative work.
Important note: Today, Git has become the undisputed standard in the software industry. Whether for personal projects, startups, or large companies, Git is used by more than 90% of developers worldwide. Its dominance is such that mastering Git is now considered a fundamental skill for any development professional.
3 - git
Git: The New Industry Standard
Git has established itself as the dominant version control system, gradually replacing SVN (Subversion) in most organizations:
Massive Adoption
- Tech companies: More than 90% of giants such as Google, Microsoft, and Amazon use Git
- Open Source: GitHub hosts more than 200 million Git repositories
- Progressive migration: Many companies are leaving SVN for Git
Why Is Git Replacing SVN?
| Aspect | Git | SVN |
|---|
| Performance | Ultra fast (local operations) | Slower (depends on the server) |
| Collaboration | Lightweight branches and intelligent merge | Complex branches and frequent conflicts |
| Availability | Offline work possible | Requires a server connection |
| Security | Distributed and secure history | Single point of failure |
Impact on the Industry
- De facto standard: Git has become an essential skill for developers
- Rich ecosystem: GitLab, GitHub, and Bitbucket offer complete solutions
- DevOps & CI/CD: Git integrates perfectly into modern pipelines
4 - Github
GitHub is like a social network for code! Imagine that Julien and Marc work together on a project:
A Concrete Example
Julien and Marc are developing a mobile application:
- Julien works on the login screen
- Marc handles the main menu
- Each can see the other's work
- They can comment and suggest improvements
Benefits for Teams
- Visibility: Everyone sees who is doing what
- Collaboration: Easy to share and discuss the code
- Organization: Projects are well arranged and documented
- Security: Changes are traced
More Than a Simple Host
GitHub also offers:
- A space for documentation
- Project-management tools
- An issue-tracking system
- Code-review features
In short: GitHub is like a virtual workspace where developers can collaborate easily, share their code, and follow the evolution of their projects.
5 - Conclusion
Conclusion: Git and GitHub — An Important Distinction
To conclude this chapter on version control systems, it is crucial to clarify a common confusion:
Git ≠ GitHub
Git is:
- A distributed version control system
- A command-line tool
- Free software created by Linus Torvalds
- Independent of any hosting service
GitHub is:
- A code-hosting platform
- A proprietary web service (owned by Microsoft)
- A web interface for managing Git repositories
- One of many Git-based services (such as GitLab, Bitbucket)
Analogy: Git is like email technology (SMTP), while GitHub is like Gmail — one service among others using that technology.
This distinction is fundamental because:
- You can use Git without GitHub
- Other platforms offer similar services
- Git skills are transferable to any platform
Mastering Git, independently of the chosen platform, remains an essential skill for any modern developer. Once this distinction is clear, the rest of the course can focus on Git commands first, then on GitHub as one convenient place to host and share that history with your team. The next lessons start with the Git installation, then a first local configuration on your machine.