Version Control

Git workflow terms for automation repositories.

7 terms

B

An independent line of development in a Git repository — a movable pointer to a commit, letting you work on a feature or fix in isolation without touching the main line. Branches are cheap and disposable; the typical flow is branch off `main`, commit work, open a pull request, merge back.

C

Applying a single specific commit from one branch onto another, by its hash — without merging the whole branch. Used to pull one fix into a release branch, or grab a colleague's commit without their other work. `git cherry-pick <hash>` copies just that change.

A saved snapshot of changes in a Git repo, with a message describing what changed and a unique hash identifying it. Commits are the atomic unit of history — each one is a revertible, reviewable point you can return to. Good commits are small and focused; the message explains why, not just what.

G

A named, fixed pointer to a specific commit — used to mark release points like `v2.4.0`. Unlike a branch, a tag doesn't move; it permanently marks "this exact commit is release 2.4.0". Annotated tags also carry a message and author, which is what release tooling reads.

M

A state Git enters when two branches modify the same part of a file in incompatible ways and cannot be automatically combined. Git marks the conflict with `<<<<<<<`, `=======`, and `>>>>>>>` markers and waits for a developer to choose which version (or a manual combination) should survive. Merge conflicts are most common on long-lived feature branches or when several people edit the same test file simultaneously.

P

A proposed set of commits opened for review before merging into a shared branch — the gate where code is reviewed, CI runs, and approval happens. Called a Merge Request on GitLab. The PR is where automated tests, linting, and human review converge before code reaches `main`.

R

Replaying your branch's commits on top of another branch's latest state, producing a linear history instead of a merge commit. `git rebase main` makes your feature branch look as if you started it from the current `main`. Powerful for a clean history, dangerous if used on shared branches — it rewrites commit hashes.