Git & GitHub / GitLab
The version control system and collaboration platforms that track every change to code, coordinate team development, and power modern CI/CD pipelines.
What it is
About Git & GitHub / GitLab
Git is the distributed version control system that underpins virtually all modern software development. Every change to a codebase is recorded as a commit with an author, timestamp, and message — creating an auditable history that can be branched, merged, and rolled back at any point. Git's branching model enables parallel development: feature branches allow work to proceed in isolation, pull requests (PRs) provide a structured mechanism for code review, and merge strategies control how changes are integrated into the main branch. GitHub and GitLab are the two dominant platforms built on top of Git. GitHub hosts the vast majority of open-source projects and is the default choice for most tech companies; GitHub Actions provides integrated CI/CD pipeline automation triggered by push, PR, or schedule events. GitLab is a stronger choice for self-hosted deployments and provides an integrated DevOps platform — issues, CI/CD, container registry, and deployment environments in a single product. For a Software Engineer, Git commands (`commit`, `push`, `pull`, `rebase`, `merge`, `stash`, `log`, `diff`, `bisect`) are used continuously throughout the working day; GitHub or GitLab is the primary collaboration surface where code review, issue tracking, and deployment are coordinated.
What you can do with it
Capabilities
Create a feature branch, make commits with descriptive messages following the team's commit convention, push to remote, and open a pull request with a summary of the change and a link to the relevant issue
Review a colleague's pull request — leave inline comments on specific lines, request changes on a function that lacks error handling, and approve the PR once the revision is addressed
Use `git bisect` to locate the exact commit that introduced a production bug by performing a binary search through the commit history — identifying the root cause in minutes rather than hours of manual searching
Write a GitHub Actions workflow that runs the test suite on every pull request, blocks merge if tests fail, and deploys to staging automatically when the PR is merged to main
Resolve a merge conflict after rebasing a long-running feature branch onto main — identify the conflicting sections, decide which changes to keep, and verify the application still works before pushing
How to learn it
Learning Resources
GitHub's free interactive course "Introduction to GitHub" at github.com/skills — browser-based exercises that walk through the full PR workflow without needing local setup
Atlassian's Git tutorials at atlassian.com/git/tutorials — the most thorough free reference for Git concepts (branching, merging, rebasing, workflows)
"Pro Git" by Scott Chacon (free online at git-scm.com/book) — the definitive Git reference, available free in full
GitLab's free Learn GitLab course at about.gitlab.com/learn — covers the CI/CD integration that makes GitLab more than a code host
Pro Tip
Write commit messages in the imperative present tense and keep the subject line under 72 characters: "Fix authentication token expiry on refresh" not "Fixed the bug with tokens." A well-written commit log is documentation — `git log --oneline` should tell the story of what changed and why without needing to open each commit.
Skills that use this tool
Roles that use this tool
Alternatives