History
The History tab is a paged commit graph for the open repository. It reads through the system git, so it shows exactly what git log would show for the same refs and filters.
The graph
- Commits are listed newest first with lanes for merges and branches.
- The list loads in pages; scrolling to the end loads more (or you press Load more when automatic loading is off or failed).
- By default the graph follows the current branch. Switch to All branches to see everything, or filter to a single branch from the branch header.
- Selecting a commit shows its message, author, committer, parents, refs and file list.
Each file in a commit can be previewed in place, saved to disk, or restored into the working tree. Restoring is a working-tree write; it does not move any ref.
Search and filters
- Free text matches commit subject and body.
author:restricts to an author string.content:searches added and removed content, not just the message.since:anduntil:restrict by date.
The filter is passed to git log, not applied to the visible rows, so a match deep in history is found. Results arrive 50 at a time; Load more continues from where the list stopped.
Commit diffs respect the ignore whitespace toggle, which is useful for filtering reformat-only commits out of a review.
Commit actions
| Action | What it does |
|---|---|
| Copy commit hash / link | Puts the hash or the forge URL on the clipboard |
| Copy or save patch | Writes git format-patch output for one commit or a range |
| Save archive | Writes a ZIP of the tree at that commit |
| Cherry-pick | Applies one or more selected commits onto the current branch |
| Revert | Creates revert commits for one or more selected commits |
| Reword | Opens the message in an editor and rewrites it |
| Squash | Squashes a contiguous selection into the oldest selected commit |
| Copy format-patch range | Copies patches for A..B |
| Show branches containing this commit | Lists local and remote branches whose history includes the commit |
| File history | Opens history restricted to a path, from any commit |
| Blame | Opens blame for a file at that commit |
Multi-select uses Cmd/Ctrl-click and Shift-click. Git decides whether an action is possible in the current state; when it refuses, its message is shown with the matching error code rather than a generic failure.
Rewriting history
Rewrites are explicit and previewable.
- Interactive rebase opens an editable todo list: drop, squash, fixup, reword, edit. Rows can be reordered by dragging, and
--autosquashfoldsfixup!andsquash!commits into their targets automatically. - Reword any commit runs a one-step interactive rebase that stops, rewrites the message and continues.
- Split the HEAD commit lets you choose hunks for each new commit. A backup ref is written before the split so the original commit stays reachable, including when the split happens at an interactive-rebase
editstop. - Recorded rewrites keep a list of the ranges you rewrote and compare old against new with
git range-diff. - Abort stops the in-progress rebase and restores the pre-rebase state. The abort path also writes a recovery snapshot of the work tree.
If a rewrite hits a conflict, you land in the conflict resolver, then continue or abort from the same banner.
Reflog
The reflog view lists HEAD movements and per-branch reflogs with a search field. From an entry you can copy the hash, inspect the commit, or reset to it:
--softkeeps the index and working tree.--mixedkeeps the working tree.--harddiscards both, and therefore writes a recovery snapshot first.
Reflog entries are local and expire on Git’s own schedule. They are not a backup of the work tree.
Signatures
Commits with a GPG or SSH signature show a badge. Verification is performed by Git: the badge distinguishes a good signature from a bad one, an untrusted signer, an expired or revoked key, and a signature that cannot be checked. Tags carry the same information in the Branches tab.
Signing is configured per repository through commit.gpgsign, with the key and format set in Settings.
Reviewing a branch
For a feature branch, Review branch sends base...HEAD to the configured ACP agent and shows the scope before sending. The result is a list of findings, each tied to a file and commit; findings need an explicit accept step. When the review finishes, a receipt records what was sent and which commit range it covered.
This is advisory. Nothing from a review is committed, staged or rewritten automatically. See ACP agents for the trust boundary.