Git is a distributed version control system designed to track changes in source code during software development. It allows multiple developers to work on a project simultaneously without interfering with each other's changes.
GitHub is a cloud-based platform that hosts Git repositories, providing collaboration features such as pull requests, issues, project management, and more.
- Created by: Linus Torvalds (the creator of Linux)
- Year: 2005
- Reason: Linux kernel development needed a fast, reliable, distributed version control system after the discontinuation of BitKeeper.
- Key Features:
- Distributed system – every developer has a full copy of the repository
- Fast performance for commits, branching, and merging
- Strong support for non-linear development with branches and merges
- Data integrity ensured through SHA-1 hashing
- Founded by: Tom Preston-Werner, Chris Wanstrath, PJ Hyett
- Year: 2008
- Purpose: Provide a web-based interface for Git repositories to facilitate collaboration, social coding, and project management.
- Key Features:
- Hosting of Git repositories
- Pull requests and code reviews
- Issues and project boards for task tracking
- GitHub Actions for CI/CD
- Social features: following developers, starring repositories
- Repository (Repo): A directory or storage space where your project lives.
- Commit: A snapshot of changes in the repository.
- Branch: A parallel version of the repository to work independently.
- Merge: Combine changes from different branches.
- Clone: Copy a repository to your local machine.
- Push & Pull: Upload changes to remote repo / fetch changes from remote repo.
- Fork: Copy someone else's repo to your account for independent development.
- Pull Request (PR): Propose changes from your branch/fork to be merged into the original repository.
- Stars: Bookmark repositories for reference or appreciation.
- Issues: Track bugs, feature requests, and tasks.
- Actions: Automate workflows such as testing, building, and deploying code.
- Efficient source code management
- Collaboration among multiple developers
- Version tracking and history
- Backup and recovery
- Supports Open Source contribution
- Integrates with CI/CD pipelines