GitHub = version control system and source code management system

Keywords: Repository, Branch, Tag, Commit, Pull request, Merge, Trunk, Master, Revision, Fork

Repository – contains .get directory (metadata and content) = on-disk data structure which stores metadata for a set of files or directory structure:
1. historical record of changes in the repository
2. set of commit objects
3. set of references to commit objects, called heads. Purpose is to store files and history of changes.

Branching = duplication of code so that modifications can happen in parallel along both branches.

Parent branch – upstream branch – branch without a parent = trunk (or meanline)

Why branching?
maintaining multiple releases
isolating changes without destabilising the codebase (bug fixes, new features, version integration)

Master branch (master) = main development branch – often next major version

Trunk = unnamed base branch (version). Working on trunk, it always contains the latest cutting-edge version of the project, making it an unstable version. Therefore we split a branch off the trunk, implementing new changes and later merging them back.

Tag = textural label of a specific revision (state of project)

Merge – integrate code back to parent branch

Fork – branch not intended to be merged (e.g. because it has been relicensed under an incompatible license by a third party, or it attempts to serve a different purpose)