Preview destructive actions, then recover
Reset, delete, discard, and force-push show the exact commits or files that would fall away — Recover browses the reflog when something still slips through.
Git is recoverable but not forgiving: the commands that lose work look like the commands that don’t. GitLane shows the consequence before it happens, and keeps a way back when it does.
What you see first
| Action | What you see first |
|---|---|
| Reset | The commits that would fall away |
| Delete branch | The commits that would fall away |
| Discard | The working-tree changes that would be thrown out |
| Force-push | The remote commits that would be replaced |
Not a generic “are you sure?” — the actual list.
If the repository changed between the preview and your confirmation — you committed from a terminal, a script ran, a rebase advanced — the operation fails cleanly instead of acting on stale state.
Force-push always uses --force-with-lease. If someone else pushed since your last fetch, the push is refused rather than silently overwriting their commits.
When something does go wrong, Recover browses the reflog so you can create a branch back at any commit that fell off.
Good to know
Almost nothing in git is actually gone — it’s just unreferenced. Recover is the button that finds those commits.
Stashes are addressed by commit id, not stash@{n}, so dropping the wrong stash that way can’t happen. The read path uses libgit2 with clone/fetch/push compiled out; every write goes through your git binary, so the always-running read path cannot modify the repository.
Full walkthrough: Safety and recovery.
Installers: Download GitLane.