Reset vs Revert
advancedDefinition
Two ways to undo a change. Reset rewinds the project's history as if the change never happened: fine in private, but disruptive on a shared branch where teammates have already seen it. Revert leaves the original change in the history and adds a brand-new change on top that cancels it out: safer for shared work.
In the wild
A developer pushes a buggy change to the shared main version of the project. Instead of trying to rewind history (which would confuse everyone who already pulled it), she reverts: adding a new change that undoes the buggy one. The history honestly shows: 'we made a mistake, then we undid it.'
More from Git & Collaboration
Branch
A separate copy of a project's files where you can experiment without affecting anyone else. It's like saving a draft of a document under a new name and editing it freely: when you're happy, you can merge your version back into the official one.
Cherry-pick
Grabbing one specific change from somewhere else in the project's history and applying it to where you're working: without bringing along any of the other changes that came around it. It's how teams move a single fix into a place that needs it.
Clone vs Fork
Cloning means copying a project to your own computer so you can work on it locally. Forking means making your own personal copy of someone else's project up on the internet, which you can then change freely and later offer your changes back to the original.
Commit
A saved snapshot of your work at a particular moment, with a short note describing what you changed. Each commit is a checkpoint you can come back to. The history of an entire project is just one commit after another, going back to its very first day.
HEAD
A bookmark that points to the version of the project you're currently looking at. Wherever HEAD is, that's the version of the files sitting on your computer. When you switch branches or jump to an older snapshot, HEAD moves with you.
Merge
Combining the work from one branch into another, so the two histories come together. Merging is how a feature that was being built off to the side gets folded back into the main version that everyone uses.