Glossary A–Z
Every term in one place, explained for someone with no technical background. Across the course, a word with a dotted underline is a glossary term: hover or tap it for the short definition, click it to come here.
- Action (GitHub Actions)
A reusable step that someone else published, used inside a GitHub workflow instead of writing the commands yourself.
A workflow step either runs a command (
run) or uses an action (uses), such asactions/checkoutto fetch the repository. Actions are pinned to a version, which is why you see@v4at the end of one.Example: The
trailguideworkflow usesactions/setup-python@v5to install Python before running the tests.Related: pipeline, ci, artifact. Lesson: GitHub Actions.
- API
The rules by which one program talks to another over a network: which requests it accepts and what it answers.
"API" stands for application programming interface. Developers say "the API changed" when the agreement between two programs changed, which is why version numbers exist. You may be asked to document one.
Example: The trail app's web version asks a server "give me the trails in region North" through its API.
Related: version, release. Lesson: Issues, features, bugs, versions, releases.
- Application
A program that people use: a website, a phone app, a command-line tool. It is built from source code.
Also called the app, the service, or the product. The application runs; the source code is what developers write and what Git stores.
Example:
trailguideis the application;src/trailguide.pyis its source code.Related: source code, project, build. Lesson: What software development is.
- Artifact
A file produced by a build or a pipeline job, kept so that the same tested result can be downloaded or deployed.
Artifacts are stored by GitLab or GitHub next to the pipeline run: a compiled program, a package, a report, a rendered documentation site.
Example: The docs pipeline produces the rendered site as an artifact; the Pages job deploys exactly that artifact.
Related: build, pipeline, deployment. Lesson: Dependencies, build, runtime.
- Backlog
The ordered list of issues the team might work on, not yet scheduled into a sprint.
Product people keep it prioritized; the top of the backlog is what gets picked next.
Example: Ana's "add a glossary page" issue waits in the backlog until the next sprint planning.
Related: issue, sprint, board. Lesson: Agile in one page.
- Board
Issues shown as cards in columns that represent states: to do, doing, in review, done.
Cards move as work progresses; on GitLab and GitHub the moves often follow Git events such as opening or merging a merge request.
Example: Opening the merge request for #12 moves its card from "Doing" to "In review".
Related: issue, merge request, definition of done. Lesson: Agile in one page.
- Branch
A movable label that points at a commit, so you can work on changes separately from the main line until they are ready.
Creating a branch costs nothing and changes no files. Each branch remembers its own newest commit; when you commit on a branch, the label moves forward. Teams give branches names such as
docs/12-windows-install-stepsso everyone can see what the work is for.Example: Ana creates the branch
docs/12-windows-install-steps, edits the installation guide there, and themainbranch stays untouched until her merge request is approved.Related: main, commit, merge, head. Lesson: What a branch really is.
- Bug
Behaviour that does not match what was intended; an issue of the kind "fix".
Bugs are tracked as issues with a
buglabel and fixed onfix/branches; urgent ones become hotfixes.Example: Issue #15, "Trail list crashes when a distance is empty".
Related: issue, hotfix, feature. Lesson: Issues, features, bugs, versions, releases.
- Build
The automated process that turns source code into something that runs or can be shipped, and also its result.
Compiled languages need a build; interpreted ones such as Python often do not. Build output (
build/,dist/) is regenerated from source and never committed.Example: "The build takes six minutes and produces
dist/trailguide-web.zip."Related: artifact, pipeline, runtime. Lesson: Dependencies, build, runtime.
- Continuous delivery / deployment (CD)
Automatically preparing every merged change for release (delivery) or automatically putting it into production (deployment).
Continuous delivery stops at "ready to deploy with one click"; continuous deployment goes all the way. Both build on continuous integration.
Example: Every merge to
maindeploys the docs site automatically: continuous deployment for documentation.Related: ci, pipeline, deployment. Lesson: CI vs Continuous Delivery vs Continuous Deployment.
- Changelist
IntelliJ IDEA's own grouping of pending changes, used to keep unrelated edits apart before committing.
It is not a Git feature:
git statusand your colleagues cannot see it. Turning on the staging area in settings gives you Git's index instead, which the terminal and the IDE then describe identically.Example: Ben keeps his fix in one changelist and his debugging print statements in another, and commits only the first.
Related: staging area, staged, shelving. Lesson: Edit, diff, stage, commit, push, update, fetch.
- Changelog
A file listing what changed in each released version, written for the people who use the software rather than for the people who wrote it.
Usually
CHANGELOG.md, with sections such as Added, Changed, Fixed and Removed. Entries are cheapest to write as each change is merged, under an "Unreleased" heading that becomes the version number on release day.Example: "Fixed: the list no longer crashes when a trail has no distance (#15)."
Related: release, version, semantic versioning. Lesson: Tags, releases, semantic versioning.
- Cherry-pick
Copying the change from one commit onto the branch you are on, as a new commit with a new hash.
It copies rather than moves, so the original stays where it was. It is how a fix on
mainreaches a release branch, and how a commit made on the wrong branch is rescued.Example: Ben cherry-picked the empty-distance fix from
mainontorelease/1.2so customers on 1.2 got it too.Related: commit, hash, revert. Lesson: Cherry-pick.
- Continuous integration (CI)
Automatically building and testing every change as soon as it is pushed, so problems surface within minutes.
The pipeline runs the same commands developers run locally; a red pipeline blocks the merge.
Example: Ana's push triggers the Markdown check; a skipped heading level turns it red, and she fixes it before review.
Related: pipeline, cd, merge request. Lesson: CI vs Continuous Delivery vs Continuous Deployment.
- Clone
Copy a whole remote repository, including its full history, onto your computer.
git clonecreates the folder, downloads every commit, sets up the remote nameorigin, and checks out the default branch so you can start working. You clone once per project per computer; after that you usepullandpushto stay in sync.Example:
git clone https://gitlab.com/northwind-trails/trailguide.gitcreates atrailguidefolder with the project and its history.Related: remote, origin, pull. Lesson: clone, remote, fetch, pull, push.
- Code review
Colleagues reading a proposed change on a merge request or pull request, commenting, suggesting edits, and approving.
Review applies to documentation as much as code. The author answers comments and pushes more commits until the reviewers approve.
Example: Dev suggests a clearer sentence on Ana's merge request; she applies the suggestion with one click and he approves.
Related: merge request, pull request, reviewer. Lesson: Code review: roles and etiquette.
- CODEOWNERS
A file mapping paths in a repository to the people or teams who must review changes to them.
The platform reads it and requests those reviews automatically. The last matching rule wins, which is the opposite of what most people expect. Being listed for the documentation paths turns "remember to ask Ana" into an automatic review request.
Example:
/docs/ @northwind-trails/docsmeans every change underdocs/needs a docs-team review.Related: code review, protected branch, reviewer. Lesson: Team conventions.
- Codespace
A development machine that runs in the cloud, opened from a GitHub repository, with an editor and a terminal.
Unlike the browser editor at github.dev, a codespace can install dependencies, run the project and execute tests, because there is a real machine behind it. It costs quota beyond a monthly allowance.
Example: Ana opens a codespace to run the trail program herself before approving a change to its error messages.
Related: ide, repository, environment. Lesson: Wiki, gists, Pages, github.dev, Codespaces.
- Commit
A saved snapshot of the project at one moment, with a message saying what changed, who made it, and when.
A commit records the exact content of every tracked file, not only the files you touched. Each commit gets a unique hash and remembers its parent commit, which is how history becomes a chain. Commits are permanent in practice: even "undoing" a commit creates a new one.
Example: After fixing a typo in
docs/faq.md, Ana runsgit commit -m "docs: fix typo in FAQ"and Git stores the snapshot as commit3c4d5e6.Related: staging area, hash, log. Lesson: Committing and good messages.
- Configuration
Settings a program reads when it starts, kept outside the source code so that the same build behaves differently per environment.
Configuration lives in files (
config.yml) or environment variables. Templates are committed; real values, especially secrets, are not.Example: The same trail app talks to a test database on staging and the real one in production, chosen by configuration.
Related: environment, environment variable, gitignore. Lesson: Environments, configuration, logs.
- Definition of done
The team's written checklist of what must be true before an issue counts as finished.
It turns "done" from an opinion into a standard: reviewed, tests green, documentation updated, merged, deployed. Merge request templates make it concrete.
Example: For Northwind Trails, a feature is done only when its FAQ entry is merged too.
Related: board, merge request, issue. Lesson: Agile in one page.
- Dependency
A library or package that a project needs in order to run or be built, written by someone else.
The list of dependencies (the manifest and lock file) is committed; the installed copies (
node_modules/,.venv/) are ignored.Example: A web project depends on 800 packages; the playground depends on nothing but Python.
Related: lock file, package manager, gitignore. Lesson: Dependencies, build, runtime.
- Deploy key
An SSH key added to one repository rather than to a person, so a server can clone it without anyone's account.
Read-only unless write access is ticked. It is the right credential for a build or documentation server, because it reaches one repository and does not leave when a person does.
Example: The documentation server clones
trailguidewith a read-only deploy key.Related: token, ssh key, repository. Lesson: Tokens, SSH keys, security settings.
- Deployment
Putting a specific build of the application into an environment so that it runs there.
"Merged" and "deployed" are different events: users see a change only after it is deployed to production. Pipelines deploy automatically to early environments and on request to production.
Example: Ana's FAQ change is merged on Monday but reaches production with Thursday's deployment.
Related: environment, pipeline, release, rollback. Lesson: Environments, configuration, logs.
- Detached HEAD
The state where HEAD points directly at a commit instead of at a branch, typically after checking out an old commit or a tag.
Nothing is broken; but commits made in this state belong to no branch and are easy to lose. Leave with
git switch -, or keep new work withgit switch -c new-branch.Example:
git checkout v1.2.0to read the FAQ as it was at the release;git switch -to return.Related: head, branch, tag. Lesson: HEAD, refs, origin, upstream.
- Diff
The list of exact line-by-line changes between two versions of your files.
Lines that were removed are marked with
-and lines that were added with+.git diffshows what you changed but have not staged;git diff --stagedshows what will go into the next commit; GitLab and GitHub show the same thing visually in a merge request.Example: Before committing, Ben runs
git diffand sees the one line he changed insrc/trailguide.py, plus a debug line he forgot to remove.Related: staging area, commit. Lesson: git diff in three forms.
- Distributed version control
A design where every copy of the repository contains the full history, so work, commits and history browsing happen offline.
Git is distributed; the team simply agrees on one copy (GitLab or GitHub) as the meeting point. This is why commit and push are separate steps.
Example: GitLab is down for an hour; everyone keeps committing and pushes later.
Related: git, remote, push. Lesson: Why version control exists.
- Editor
A program for writing plain text such as source code, Markdown and configuration, without hidden formatting.
VS Code is an editor that becomes an IDE through extensions; Git also opens your editor for commit messages when you omit
-m.Example: Ana writes every guide in VS Code with the Markdown preview open.
Related: ide, terminal, markdown. Lesson: IDE, terminal, shell, editor.
- Environment
A complete place where the application runs — machines, runtime, configuration and data — such as local, development, test, staging or production.
Earlier environments are cheap to break; production is the real thing. A change travels through them by deployments.
Example: "It is on staging" means testers can see it; users cannot yet.
Related: deployment, configuration, pipeline. Lesson: Environments, configuration, logs.
- Environment variable
A named value the operating system hands to a program when it starts, used for settings that differ per environment or must stay secret.
Locally they often come from a
.envfile, which must be ignored by Git; on servers and in pipelines they are set as CI/CD variables or secrets.Example:
DATABASE_URLpoints at a different database on each environment.Related: configuration, gitignore, environment. Lesson: Environments, configuration, logs.
- Fast-forward
A merge where the target branch simply moves its label forward to the other branch's commit, because it had no new commits of its own.
No merge commit is created and no conflict is possible.
git pullfast-forwards when you have no local commits.Example: After the web edit, Ana's
git pullreports "Fast-forward" and hermaincatches up.- Feature
Something new that users will notice; an issue of the kind "add", worked on a
feature/branch.Features are usually larger than fixes and travel through review and testing before a release.
Example: Issue #21, "Add a difficulty filter to the trail list".
Related: issue, bug, branch. Lesson: Issues, features, bugs, versions, releases.
- Feature flag
A setting that turns a piece of behaviour on or off without deploying anything, so unfinished work can be merged and shipped while staying invisible.
It separates deploying from releasing: the code goes out continuously, and the feature is switched on for the team, then for everyone. The fastest possible rollback is turning the flag off.
Example: The difficulty filter was in production for a week before anyone could see it, behind a flag.
Related: deployment, rollback, cd. Lesson: Environments, deployments, rollback.
- Fetch
Download new commits from the remote into your local repository without changing any of your files.
Fetch is the safe way to see what the team has pushed: it updates the remote-tracking branches such as
origin/main, and nothing in your working tree moves. You then decide whether to merge or rebase.Example: Chloe runs
git fetchbefore lunch, thengit statustells her thatmainis behindorigin/mainby 2 commits.Related: pull, remote, origin. Lesson: fetch vs pull.
- Fork
Your own server-side copy of someone else's repository, used to propose changes to a project you cannot push to.
You push branches to your fork and open a merge request or pull request from it to the original.
Example: An outside contributor forks the public
trailguidemirror to fix a link.Related: clone, pull request, upstream. Lesson: Forks and the fork workflow.
- Gist
A small set of files with its own URL on GitHub, used to share a fragment that belongs to no repository.
Gists are version controlled and can be cloned. A "secret" gist is unlisted rather than private: anyone with the link can read it, so never put a credential in one.
Example: Ben sends Chloe a gist containing the two commands that reproduce the crash.
Related: snippet, repository, markdown. Lesson: Wiki, gists, Pages, github.dev, Codespaces.
- Git
The program that records snapshots of a folder over time, so you can go back, compare versions, and work in parallel with other people.
Git runs on your computer and stores everything in a hidden
.gitfolder inside the project. GitLab and GitHub are websites that host Git repositories and add teamwork features around them; Git itself works without them.Example: Ana installs Git on her laptop, then uses VS Code (which runs Git behind the scenes) to save snapshots of the documentation she writes.
Related: repository, gitlab, github, version control. Lesson: Why version control exists.
- GitHub
A website that hosts Git repositories and adds pull requests, issues, code review, GitHub Actions (automation) and more.
GitHub belongs to Microsoft and hosts most open-source projects. The concepts are the same as GitLab's, with different names: a "pull request" on GitHub is a "merge request" on GitLab, and an "organization" is roughly a "group".
Example: The Northwind Trails team keeps a public mirror of
trailguideon GitHub so outside contributors can open pull requests.Related: gitlab, pull request, remote. Section: GitHub.
- GitLab
A website, or a server a company runs itself, that hosts Git repositories and adds merge requests, issues, CI/CD pipelines, and more.
GitLab is the primary platform in this course. It organizes work into groups and projects, and its merge requests are where review and automated checks happen before a change reaches
main.Example: Ana opens a merge request on gitlab.com; the pipeline checks her Markdown, Dev approves, and the change is merged.
Related: github, merge request, remote. Section: GitLab.
- .gitignore
A file listing patterns of files that Git should never track, such as build output, editor settings and files containing secrets.
Anything matching a pattern in
.gitignorebecomes ignored:git statusstops mentioning it andgit add .skips it. The file is itself committed, so the whole team ignores the same things.Example: The
trailguideproject ignores__pycache__/,.venv/and.env, so Ben's local Python files and his private API key never end up in a commit.Related: ignored, untracked. Lesson: .gitignore.
- Hash (SHA)
The unique id of a commit: a 40-character code, usually shown as its first 7 characters, such as
7a8b9c0.Git computes the hash from the commit's content, so two different commits never share one. You use hashes to refer to a specific commit in commands such as
git show 7a8b9c0orgit revert 7a8b9c0. Your own hashes will always differ from the ones in this course.Example: Chloe reports "the bug appeared in commit 3c4d5e6", and Ben can look at exactly that snapshot.
Related: commit, log. Lesson: Commits, hashes and history.
- HEAD
Git's name for "where you are right now": normally the newest commit of the branch you are on.
When you commit, HEAD moves forward with your branch.
HEAD~1means "one commit before HEAD". If HEAD points at a commit instead of a branch, you are in "detached HEAD" state, which the course explains in the recovery section.Example:
git show HEADshows the last commit you made;git diff HEADshows everything you changed since it.Related: commit, branch, detached head. Lesson: HEAD, refs, origin, upstream.
- Hotfix
An urgent bug fix that goes to production immediately, outside the normal release schedule, on a
hotfix/branch.Hotfixes still get an issue and a fast review; what makes them special is the direct path to production.
Example: Issue #23, "Wrong region name shown for Harbour Path", fixed and deployed the same afternoon.
Related: bug, release, branch. Lesson: Feature, bug-fix, hotfix, release workflows.
- IDE
Integrated development environment: a code editor bundled with tools for running, testing and version control, such as VS Code or IntelliJ IDEA.
An IDE runs Git for you when you click buttons, which is why this course always shows the command underneath. Knowing the command means you are never stuck when a button moves.
Example: In VS Code, clicking the "+" next to a file runs
git addon that file.Related: terminal, git, editor. Sections: Git in VS Code, Git in IntelliJ IDEA.
- Ignored
A file that matches a pattern in
.gitignore; Git behaves as if it does not exist.Ignored files stay on your disk and you can use them normally. They simply never appear in
git statusand never get committed. To see them anyway, rungit status --ignored.Example: Ben's
.venv/folder is 200 MB of Python packages; it is ignored, so it never slows down the repository.Related: gitignore, untracked. Lesson: .gitignore.
- Issue (ticket)
A numbered record of one piece of work: title, description, assignee, labels and discussion; the handle that links branches, commits and merge requests to the work.
GitLab and GitHub call them issues; Jira calls them tickets.
#12in a commit message or merge request becomes a link.Example: Issue #12, "Installation guide is missing the Windows steps", closed by merge request !47.
Related: feature, bug, merge request, board. Lesson: Issues, features, bugs, versions, releases.
- Label
A coloured tag on an issue or merge request that marks its kind, area or priority, used for filtering and boards.
Example:
documentation,bug,good first issue.Related: issue, board, milestone. Lesson: Agile in one page.
- Git LFS (Large File Storage)
An extension that keeps large files on a separate server and stores a small pointer file in the repository instead.
Git keeps every version of every file forever, which is fine for text and painful for video. The symptom that LFS is in use and not installed is opening an image and finding three lines of text mentioning
oid sha256.Example: The project stores its screencasts with LFS; a plain clone gets pointers until
git lfs pullfetches the real files.Related: repository, clone, gitignore. Lesson: Monorepos, LFS, submodules.
- Local History
IntelliJ IDEA's record of every file save, refactoring and IDE action, kept independently of Git.
It is the only tool in this course that can recover work Git never saw: an edit discarded before committing, a file deleted before it was added, or changes lost to a hard reset. It is local, expires after a few days, and is a safety net rather than a backup.
Example: Chloe recovered a paragraph she had discarded by opening Local History on the file and copying it out of an older version.
Related: reflog, working tree, restore. Lesson: Shelve, stash, Local History.
- Lock file
A generated file that records the exact versions of every dependency that was installed, so everyone installs precisely the same ones.
Never edited by hand; a package manager regenerates it. It is committed alongside the manifest.
Example:
package-lock.jsonchanges by 300 lines when Ben adds one library.Related: dependency, package manager. Lesson: Files and folders in a project.
- Log
The list of commits in the history, newest first, with their hashes, authors, dates and messages.
git logis how you answer "what happened, when, and who did it".git log --onelineshows one line per commit; IDEs and the web UIs show the same list with a graph.Example: Before a release, Dev reads
git log --oneline v1.2..mainto see every change since the last version.Related: commit, hash. Lesson: Reading history.
- Logs (program output)
Lines a program writes about what it is doing and what went wrong, on screen, in files, or in a pipeline job's output.
Not stored in Git. The last line of an error is usually the one that matters; copy the whole message into bug reports.
Example:
FileNotFoundError: [Errno 2] No such file or directory: 'data/trails.csv'.Related: pipeline, environment. Lesson: Environments, configuration, logs.
- main
The default branch: the version of the project the team treats as the current, working one.
Older projects call it
master. Teams usually protectmainso nobody can push to it directly; changes arrive through merge requests or pull requests after review.Example: When Ana's merge request is approved and merged, her documentation change becomes part of
main, and the next deployment includes it.Related: branch, merge, protected branch. Lesson: Branch types and naming.
- Maintainer
The person responsible for a repository's main branch: decides what gets merged, protects branches, cuts releases, and manages settings.
On GitLab it is also a role name; on GitHub the equivalent permission is "Maintain".
Example: Dev approves and merges Ana's merge requests and creates the
v1.2.0tag.Related: reviewer, protected branch, release. Lesson: Roles on a team.
- Markdown
A plain-text way to write documents (
# heading,**bold**,- list) that GitLab, GitHub and many tools render as formatted pages.Markdown files end in
.md. Because they are plain text, Git can show exactly which lines changed, and reviewers can comment on a single line. README files, wikis, issues and merge request descriptions all use Markdown.Example: Ana writes
docs/getting-started.mdin Markdown; on GitLab it appears with headings, links and a code block.Related: repository, diff. Lesson: Markdown for documentation.
- Merge
Combine the commits of one branch into another.
If the target branch has not moved, Git simply moves its label forward (a "fast-forward"). If both branches have new commits, Git creates a merge commit with two parents. When both sides changed the same lines, Git stops and asks you to resolve a conflict.
Example: Dev merges
docs/12-windows-install-stepsintomain; the Windows steps are now in the official guide.Related: branch, merge request, merge conflict, fast forward. Lesson: Merging.
- Merge conflict
The situation where two branches changed the same lines of the same file differently, so Git cannot combine them and asks you to choose.
Git marks the conflicting region in the file; you edit it to the intended result, stage it, and finish the merge. Documentation files conflict as easily as code.
Example: Ana and Ben both edited the FAQ's first answer; Ana resolves the conflict by keeping both sentences.
Related: merge, branch. Lesson: Why conflicts happen.
- Merge request (MR)
On GitLab: a request to merge your branch into another branch, with a description, reviewers, discussion, approvals and pipeline results all in one page.
A merge request is where teamwork happens: reviewers comment on specific lines, suggest changes, and approve. Only when the checks pass and the approvals are in does someone press Merge. GitHub calls the same thing a pull request.
Example: Ana opens MR !47 "Add Windows steps to installation guide (#12)"; Dev reviews it and merges it the same afternoon.
Related: pull request, merge, branch, code review. Lesson: Merge requests end to end.
- Milestone
A goal with a date, usually a release, that groups the issues and merge requests meant to be part of it.
Example: Milestone
v1.2.0contains twelve issues; the release notes are its closed issues in prose.Related: issue, release, sprint. Lesson: Agile in one page.
- Modified
A tracked file whose content on disk differs from the last commit and has not been staged yet.
git statuslists modified files under "Changes not staged for commit". Nothing is saved until you stage the change withgit addand then commit.Example: Ana edits
README.md;git statusshowsmodified: README.mdin red until she runsgit add README.md.Related: staged, untracked, tracked. Lesson: File states.
- Monorepo
One repository holding many projects: several applications, their shared libraries, the infrastructure and the documentation, versioned together.
A change spanning two projects is one merge request rather than two, at the cost of a larger clone and pipelines that must work out what changed. Ownership and CI rules are scoped by directory rather than by repository.
Example: In the monorepo, the docs team owns
/docsrather than owning a separate documentation repository.Related: repository, codeowners, pipeline. Lesson: Monorepos, LFS, submodules.
- Organization
A GitHub account that belongs to a company or community rather than a person, holding repositories, teams and members.
Repositories in an organization outlive the people who created them, which is why shared work belongs there rather than in someone's personal account. Organizations do not nest; teams inside them do.
Example:
northwind-trailsis the organization that owns thetrailguiderepository.Related: team, repository, project. Lesson: Organizations, teams, repositories.
- origin
The default name Git gives to the remote you cloned from.
"origin" is only a nickname for a URL; you could rename it, but almost nobody does.
origin/mainis your local copy of what the remote'smainlooked like the last time you fetched.Example:
git push origin mainmeans "send mymaincommits to the remote called origin".Related: remote, clone, fetch, remote tracking branch. Lesson: What a remote is.
- Package manager
The tool that installs a project's dependencies from its manifest and writes the lock file: pip for Python, npm for JavaScript, Maven for Java.
Example:
npm installreadspackage.json, downloads 800 packages intonode_modules/, and updatespackage-lock.json.Related: dependency, lock file. Lesson: Dependencies, build, runtime.
- Pipeline
The automated sequence of steps that runs after every push: build, test, lint, package, deploy.
Defined in
.gitlab-ci.yml(GitLab) or a workflow file under.github/workflows/(GitHub). Green means every job passed; red means stop and read the job log.Example: The trailguide pipeline runs the tests and a Markdown check on every push.
Related: ci, cd, artifact, logs. Lesson: Pipeline, job, runner, artifact, environment.
- Programming language
A language for writing instructions a computer can follow, such as Python, JavaScript or Java, written as plain text files.
Each language has its own tools: an interpreter or compiler, a package manager, test frameworks.
Example:
trailguide.pyis written in Python and run withpython3.Related: source code, runtime, build. Lesson: What software development is.
- Project
The folder with everything needed to build and run an application: source code, tests, documentation, data, configuration.
On GitLab, "project" also means the page that contains a repository plus its issues, merge requests, pipelines and settings.
Example: The
trailguide/folder is the project; on gitlab.com it is the projectnorthwind-trails/trailguide.Related: repository, application, source code. Lesson: What software development is.
- Protected branch
A branch, usually
main, that the platform guards: no direct pushes, no force pushes, no deletion; changes arrive only through reviewed merge requests.Example: Ana's push to
mainis refused; she opens a merge request instead, as intended.Related: main, merge request, maintainer. Lesson: Protected branches.
- Pull
Fetch the new commits from the remote and merge (or rebase) them into your current branch, in one command.
git pull=git fetch+git merge. It changes your files, so run it when your work is committed or stashed. If the remote and you changed the same lines, the merge can produce a conflict.Example: Every morning Chloe runs
git pullonmainbefore starting a new branch, so her branch starts from the latest version.Related: fetch, merge, push, fast forward. Lesson: fetch vs pull.
- Pull request (PR)
On GitHub: a request to merge your branch into another branch, with review, discussion, checks and approvals. The same idea as a GitLab merge request.
The name comes from asking the maintainer to "pull" your changes. Everything you learn about merge requests applies to pull requests; only the buttons and some words differ.
Example: An outside contributor opens PR #88 on the GitHub mirror of
trailguideto fix a broken link.Related: merge request, merge, code review. Lesson: Pull requests end to end.
- Push
Upload the commits from your local branch to the remote so other people (and the pipeline) can see them.
Push only sends commits, never uncommitted edits. If someone else pushed to the same branch first, Git rejects your push until you fetch and integrate their commits.
Example: Ana runs
git push -u origin docs/12-windows-install-stepsand GitLab replies with a link to create a merge request.Related: pull, remote, commit. Lesson: clone, remote, fetch, pull, push.
- Rebase
Taking the commits a branch added and applying them again on top of a different starting commit, so the history becomes a straight line.
The replayed commits are new commits with new hashes, which is why a rebased branch that was already pushed needs
git push --force-with-lease. Safe on a branch only you have; disruptive on a branch someone else works on.Example: Ana rebases her documentation branch onto today's
mainbefore review, so the merge request shows only her change.Related: merge, rewriting history, hash. Lesson: Rebasing explained.
- Ref
A named pointer to a commit: a branch, a tag, or a remote-tracking branch, stored as a tiny file under
.git/refs.Refs are what let people say
mainorv1.2.0instead of a hash.Example:
.git/refs/heads/maincontains the hash of the newest commit onmain.Related: branch, tag, head. Lesson: HEAD, refs, origin, upstream.
- Reflog
Git's private diary of every position
HEADand each branch has held in your clone, which is what makes a "lost" commit findable again.It is local: never pushed, never fetched, and it keeps entries for about ninety days.
git refloglists it, and resetting to one of its entries brings back a commit thatgit logcan no longer see.Example: After a hard reset removed her afternoon's work, Ana found it in
git reflogand restored it with one command.Related: head, commit, rewriting history. Lesson: The safety net and the reflog.
- Release
A named version of the software handed to users, with release notes; in Git, a tag on a commit plus notes and artifacts on the platform.
Released is not the same as deployed: a release exists as a version; a deployment puts it into an environment.
Example: "trailguide 1.2.0 released, adds the
--longestoption".Related: version, tag, deployment. Lesson: Tags, releases, semantic versioning.
- Remote
A copy of the repository stored somewhere else, usually on GitLab or GitHub, that the whole team shares.
Your local repository and the remote each hold the full history. You bring their commits to you with fetch or pull and send yours with push. Most projects have one remote, named origin.
Example: The team's remote is
https://gitlab.com/northwind-trails/trailguide; each team member has their own local clone.Related: origin, clone, push, fetch. Lesson: What a remote is.
- Remote-tracking branch
Your local bookmark of where a remote branch was the last time you fetched or pushed, named like
origin/main.It moves only on fetch, pull and push, never when you commit; "up to date with origin/main" means up to date with this bookmark, not necessarily with the server right now.
Example: After
git fetch,origin/mainjumps ahead andgit statussays your branch is behind.Related: origin, fetch, tracking branch. Lesson: HEAD, refs, origin, upstream.
- Repository (repo)
A project folder whose history Git tracks; the history lives in a hidden
.gitfolder inside it.Everything Git knows about the project — every commit, branch and tag — is inside
.git. Delete that folder and you have an ordinary folder again. On GitLab a repository lives inside a "project"; on GitHub the repository is the project.Example:
trailguide/is a repository: it contains the code, the docs, and a.gitfolder with 214 commits of history.Related: git, working tree, remote. Lesson: init vs clone; the .git folder.
- Requirement
Something somebody needs from the software, before it is written down as an issue.
Example: A customer emails "the guide should explain Windows installation"; it becomes issue #12.
Related: issue, feature. Lesson: Issues, features, bugs, versions, releases.
- Restore
The command that brings a file back to a known state: it discards your edits or removes a file from the staging area.
git restore <file>throws away uncommitted edits to that file (this cannot be undone).git restore --staged <file>only unstages, keeping your edits. Older guides usegit checkout -- <file>for the same thing.Example: Ana accidentally deletes a paragraph in
docs/faq.md;git restore docs/faq.mdbrings the committed version back.Related: staged, modified, working tree. Lesson: Undo, beginner edition.
- Revert
Undo a commit by creating a new commit that applies the opposite change, leaving history intact.
Safe on shared branches because it adds rather than rewrites; the usual way to undo something that was already pushed.
Example: Chloe's pushed change breaks the pipeline;
git revert HEADand a push make it green again in two minutes.Related: commit, rewriting history. Lesson: Undo, beginner edition.
- Reviewer
A colleague who reads a merge request or pull request, comments, suggests changes, and approves or requests changes.
Any team member can review; documentation changes benefit from a reviewer who checks accuracy and one who checks wording.
Example: Ben reviews the technical content of Ana's guide; Dev gives the final approval.
Related: code review, maintainer, merge request. Lesson: Roles on a team.
- Rewriting history
Replacing existing commits with new ones (different message, content, order or parent), which gives them new hashes.
Fine on your own unpushed work (amend, squash); disruptive on branches other people have, because their copies no longer match. The one rule: rewrite only what you have not pushed.
Example: Ana amends a pushed commit and
git statusreports her branch andorigin/main"have diverged".Related: commit, hash, revert. Lesson: What rewrites history and what does not.
- Rollback
Deploying the previous version again because the new one misbehaves; sometimes done in Git with a revert.
Example: Release 1.2.1 crashes on startup; operations roll back to 1.2.0 while the fix is prepared.
Related: deployment, revert, release. Lesson: Environments, deployments, rollback.
- Ruleset
A named list of rules on GitHub controlling what may happen to a branch or tag: required reviews, required checks, no force pushes.
Several rulesets can apply to one branch, and they are enforced alongside the older branch protection rules, with the most restrictive version of a rule winning. Anyone with read access can see the active ones.
Example: The ruleset on
mainrequires a pull request, one approval and a green check before merging.Related: protected branch, pull request, code review. Lesson: Branch protection and rulesets.
- Runner
The machine that executes a CI/CD job, usually a fresh container created from an image and thrown away afterwards.
Because it starts clean and clones only what was pushed, a job can fail while the same commands pass on your computer: a different version, a missing dependency, or a file you never committed.
Example: The tests job runs on a runner using the
python:3.13-slimimage, which is why it does not have the packages installed on Ana's laptop.Related: pipeline, ci, artifact. Lesson: Pipeline, job, runner, artifact, environment.
- Runtime
The software that executes a program: the Python interpreter, the Java Virtual Machine, Node.js, a browser.
Runtimes have versions; projects pin the version they need, often in the pipeline definition, which is why "it works on my machine" usually means a version difference.
Example: The pipeline runs the tests with
python:3.12whatever is installed on each laptop.Related: build, dependency, pipeline. Lesson: Dependencies, build, runtime.
- Semantic versioning
The convention of numbering releases
MAJOR.MINOR.PATCH, where each part is a specific promise to whoever depends on the project.Major means something that used to work no longer does; minor means new behaviour with nothing broken; patch means a fix and nothing else. Renaming an option or changing a default is a breaking change, even though it feels small.
Example: 1.2.1 fixed a bug, 1.3.0 added the difficulty filter, and 2.0.0 renamed an option people had scripted.
Related: version, release, changelog. Lesson: Tags, releases, semantic versioning.
- Shell
The program inside the terminal that reads what you type and runs it: zsh, bash, PowerShell, or Git Bash on Windows.
The terminal is the window; the shell is the interpreter behind it. This course uses bash-style commands, which work in Git Bash, macOS and Linux.
Example:
echo $SHELLprints/bin/zshon a Mac.Related: terminal, editor. Lesson: IDE, terminal, shell, editor.
- Shelving
IntelliJ IDEA's way of setting pending changes aside, similar to a stash but the IDE's own and invisible to Git.
Unlike
git stash, shelving is selective: you can shelve two files out of five. Smart Checkout uses it behind the scenes when you switch branches with uncommitted work, which is where "my changes disappeared" usually comes from.Example: Ana shelved the FAQ edits, switched branches to answer a question, and unshelved them when she came back.
Related: stash, changelist, local history. Lesson: Shelve, stash, Local History.
- Snippet
A small set of files with its own URL on GitLab, used to share a fragment that belongs to no project.
Snippets are version controlled, hold up to ten files, and can belong to a project or to you personally. A project snippet is never more visible than its project.
Example: The team keeps the sample configuration file as a project snippet rather than re-sending it.
Related: gist, project, markdown. Lesson: Wiki, snippets, Pages, Web IDE.
- Source code
The human-written text instructions that make up a program, kept in plain text files that Git tracks.
Source code is the original; builds and running applications are produced from it.
Example: The 60 lines of
src/trailguide.py.Related: application, programming language, repository. Lesson: What software development is.
- Sprint (iteration)
A fixed period, often two weeks, in which the team commits to a chosen set of issues.
Tracked with milestones or iterations; ends with a review and a retrospective.
Example: Sprint 14 contains the twelve issues of milestone
v1.2.0.Related: backlog, milestone, board. Lesson: Agile in one page.
- Squash
Combining several commits into one, usually when merging a branch, so that
maingets one clean commit per merge request.Example: Ben's nine "wip" commits become one commit, "feat: add difficulty filter (#21)", when Dev merges with squash enabled.
Related: merge, rewriting history, merge request. Lesson: Merging.
- SSH key
A pair of files, one private and one public, that proves who you are to a server without sending a password.
You keep the private half on your computer and upload the public half to GitLab or GitHub. Pushing over SSH then needs no token and no password prompt.
Example: Ana generates a key on her laptop, adds the public half to her account, and
git pushstops asking for anything.Related: token, deploy key, push. Lesson: SSH keys.
- Staged
A change that has been added to the staging area with
git addand will be part of the next commit.git statuslists staged changes under "Changes to be committed" in green. A file can be both staged and modified at the same time if you edit it again after staging.Example: Ana runs
git add README.md; the README change is now staged, while her unfinished edit todocs/faq.mdis not.Related: staging area, modified, commit. Lesson: Staging with git add.
- Staging area (also: index)
The waiting room between your edited files and a commit: you choose which changes go into the next snapshot.
Editing a file changes only your working tree.
git addcopies the change into the staging area;git committurns everything in the staging area into a commit. This extra step lets you commit part of your work, or review exactly what you are about to save. Git's older name for it is "the index".Example: Ana changed three files but only two belong together; she stages those two, commits, then stages and commits the third separately.
Related: working tree, staged, commit. Lesson: The four areas.
- Stash
A local place to park uncommitted changes so you can switch branches or pull, and get them back afterwards with
git stash pop.Stashes never leave your computer; for work that lasts more than a few hours, commit on a branch instead.
Example: Ana stashes her half-written paragraph, checks
mainfor Dev, and pops it back four minutes later.Related: working tree, branch. Lesson: Stash: parking work.
- Status check
A result reported by automation against a commit, shown on the merge or pull request, and optionally required before merging.
A check that merely reports is advice; a check the branch rules require is a reviewer, and the merge button stays locked until it passes. Which is which is a branch setting, not a pipeline setting.
Example: The Markdown linter blocks the merge; the spell checker only reports, because it was added last week.
Related: pipeline, protected branch, merge request. Lesson: CI as a reviewer: status checks.
- Submodule
Another Git repository nested inside this one, pinned to a specific commit.
The parent records only which commit the submodule points at, not its files, so a change inside a submodule shows in the parent as a single "Subproject commit" line. A plain clone leaves the folder empty until
git submodule update --init --recursivefills it.Example: The shared style files live in a submodule, which is why the folder was empty after Ana's first clone.
Related: repository, clone, commit. Lesson: Monorepos, LFS, submodules.
- Tag
A permanent name for one commit, such as
v1.2.0; unlike a branch, it never moves.Tags mark releases; platforms attach release notes and artifacts to them.
Example:
git tag v1.2.0names the commit that became release 1.2.0.Related: release, version, ref. Lesson: Tags, releases, semantic versioning.
- Team
A named group of people inside a GitHub organization, given a role on repositories so access is managed once rather than person by person.
Teams can contain other teams, and a child team inherits its parent's access. Mentioning a team notifies everyone in it, and a team can be named as a required reviewer.
Example: The
docsteam has Write ontrailguide, so every writer who joins gets it automatically.Related: organization, maintainer, code review. Lesson: Organizations, teams, repositories.
- Terminal
The window where you type commands and read their text output; on macOS it is the Terminal app, on Windows usually Git Bash or PowerShell.
Everything Git can do is available in the terminal, and error messages appear there in full. IDEs include a terminal panel so you can mix buttons and commands.
Example: Chloe opens the terminal in VS Code, types
git status, and reads that two files are modified.Related: ide, shell, git. Lesson: The terminal for humans.
- Access token
A long generated string used instead of your password to let a program act on your behalf, limited to what you allowed and usually with an expiry date.
Git over HTTPS uses one in place of a password. Tokens can be scoped to a few permissions and, on GitHub, to specific repositories, which is what makes them safer than a password.
Example: Ana's fine-grained token can read and write one repository and stops working in ninety days.
Related: ssh key, deploy key, push. Lesson: Personal access tokens and other tokens.
- Tracked
A file Git already knows about because it was in a previous commit or has been staged.
Git watches tracked files for changes and reports them in
git status. A brand-new file is untracked until yougit addit for the first time.Example:
README.mdis tracked, so when Ana edits it Git says "modified"; her newnotes.txtis untracked, so Git only says it exists.Related: untracked, modified, staged. Lesson: File states.
- Tracking branch (upstream)
A local branch linked to a remote branch, so that
git statuscan report ahead/behind andgit pullandgit pushknow where to go.maintracksorigin/mainafter a clone; a new branch is linked by its firstgit push -u origin <branch>.Example:
branch 'main' set up to track 'origin/main'after the first push.Related: remote tracking branch, push, upstream. Lesson: Publish, track, update from main.
- Two-factor authentication (2FA)
Signing in with something you know and something you have: a password plus a code from your phone or a security key.
Both platforms require it of contributors. Once it is on, a password alone no longer works anywhere, including for Git, which is why pushing needs a token or an SSH key.
Example: Chloe's sign-in asks for a six-digit code from her phone after her password.
Related: token, ssh key. Lesson: Two-factor authentication, SSO and company policies.
- Untracked
A file in your folder that Git has never been told about: it is not in any commit and not staged.
git statuslists untracked files at the bottom. They are never committed by accident unless you rungit add ., which stages everything, so check the list first. If a file should stay untracked forever, add it to.gitignore.Example: Ana creates
CONTRIBUTING.md; until she runsgit add CONTRIBUTING.md, Git shows it under "Untracked files".Related: tracked, ignored, gitignore. Lesson: File states.
- Upstream
Either the remote branch a local branch tracks (its "upstream"), or, in open source, the original project a fork was made from.
The context tells which:
git push -usets the first kind; a second remote namedupstreamis the second.Example:
git branch --set-upstream-to=origin/mainlinks a branch;git remote add upstream <url>adds the original project to a fork.Related: tracking branch, fork, remote. Lesson: HEAD, refs, origin, upstream.
- Version
A label that identifies one exact state of the software, usually three numbers such as
2.4.1(breaking changes, features, fixes).In Git a version is a tag on a commit; on the platform it becomes a release.
Example:
2.4.1fixes something in2.4.0without adding features.Related: release, tag. Lesson: Issues, features, bugs, versions, releases.
- Version control
A system that records every change to a set of files so you can see who changed what and when, go back to any earlier version, and work in parallel with other people.
Git is the most widely used version-control system. Without it, teams end up with
report_final_v2_REAL.docxand overwrite each other's work.Example: Six months after a change, Dev can still see exactly which line Ana changed in the installation guide and why.
Related: git, commit, repository. Lesson: Why version control exists.
- Workflow (GitHub Actions)
An automated process defined by a YAML file in
.github/workflows/, made of jobs that run when something happens in the repository.The GitHub equivalent of a GitLab pipeline. A workflow runs on an event such as a push or a pull request; each job runs on a runner and contains steps.
Example: The
ciworkflow runs the tests and the Markdown linter on every pull request.Related: pipeline, action, ci. Lesson: GitHub Actions.
- Working tree (also: working directory)
The actual files and folders you see and edit on your disk, inside the repository folder.
The working tree is what your editor opens. Git compares it with the staging area and the last commit to tell you what changed. Edits here are not saved in Git until you stage and commit them.
Example: Ana opens
trailguide/docs/faq.mdin VS Code and types a new answer; that change exists only in her working tree until she commits.Related: staging area, repository, modified. Lesson: The four areas.