GitLab Keyboard Shortcuts
GitLab's keyboard shortcuts work across its entire web interface rather than being scoped to just one feature area, reflecting how the platform spans source control, issue tracking, and CI/CD pipelines all under one roof — the shortcuts are organized around quickly jumping between those different functional areas of a project, plus a dedicated set for navigating merge request diffs efficiently. Like any web app, these function identically regardless of operating system, though most require pressing '?' first to reveal the full reference if you forget a binding, since GitLab doesn't surface them in visible menus the way a desktop app typically does. Merge request approval rules, which can require a specific number of approvals or approvals from designated code owners before a merge request becomes mergeable, add a configurable governance layer on top of the basic review workflow, commonly used by larger teams enforcing consistent review standards across a project. Because GitLab bundles CI/CD pipelines directly alongside source control and issue tracking, viewing a pipeline's status from within a merge request (rather than switching to a separate CI tool entirely) is a routine part of the review workflow that a source-control-only tool wouldn't need to account for.
Global Navigation
| Action | Windows | Mac | Description |
|---|---|---|---|
| Show keyboard shortcut reference | ? | ? | Opens a modal listing every available keyboard shortcut in the current context, GitLab's built-in cheat sheet for when you forget a specific binding. |
| Go to your Projects | Shift+P | Shift+P | Jumps directly to your projects dashboard from anywhere in GitLab, bypassing whatever page or repository you're currently viewing. |
| Open search | / | / | Jumps the text cursor directly into the search bar spanning the top of every GitLab page, ready to search across projects, issues, merge requests, and even code content without a mouse click to get there. |
| Go to Activity feed | Shift+A | Shift+A | Navigates to your personalized activity feed showing recent events across projects you're a member of. |
| Toggle collapsed sidebar | \ | \ | Collapses or expands GitLab's left navigation sidebar, freeing up horizontal screen space for reading a wide diff or a long file without needing to resize the browser window itself. |
Merge Requests
| Action | Windows | Mac | Description |
|---|---|---|---|
| Jump to next unresolved discussion (MR) | N | N | Inside a merge request's diff view, jumps to the next unresolved review comment thread, letting a reviewer work through open discussions sequentially. |
| Jump to previous unresolved discussion (MR) | P | P | Jumps backward to the previous unresolved discussion thread in a merge request diff, the reverse of the next-discussion shortcut. |
| Resolve/unresolve current discussion thread | R | R | Marks the currently focused discussion thread as resolved or reopens it, without needing to click the resolve button explicitly. |
| Expand all diff files | Shift+R (varies by version) | Shift+R | Expands every collapsed file diff in a merge request at once, useful for large merge requests where GitLab collapses files by default to manage page load. |
| View CI/CD pipeline status | Pipelines tab on MR (no dedicated key) | — | Shows the current CI/CD pipeline status directly within a merge request, letting a reviewer check whether tests pass without switching to a separate continuous integration tool entirely. |
| Approve a merge request | Approve button on MR (no dedicated key) | — | Formally approves the current merge request, which may be required to satisfy configured approval rules (like a minimum number of approvals or code-owner sign-off) before it becomes mergeable. |
| Start a comment on a diff line | C (with diff line focused) | C | Opens a comment box anchored to the currently focused line in a merge request diff, letting a reviewer leave line-specific feedback without clicking the small comment icon that only appears on hover. |
Issues
| Action | Windows | Mac | Description |
|---|---|---|---|
| Create new issue | I | I | Opens the new issue creation form for the current project directly, skipping the need to navigate to the Issues tab and click the new-issue button manually. |
| Go to project Issues list | G then I | G then I | A two-key chord that navigates to the current project's Issues list, part of GitLab's 'G then [letter]' family of go-to navigation shortcuts. |
| Go to project Merge Requests list | G then M | G then M | Navigates to the current project's Merge Requests list using the same chorded 'G then [letter]' pattern as the Issues navigation shortcut. |
| Close current issue | Close issue button (no dedicated key) | — | Marks the currently open issue as closed, removing it from active issue lists while preserving its full history and discussion for later reference. |
Frequently Asked Questions
Why do some shortcuts use a two-key sequence like 'G then I' instead of a single combination?
GitLab borrows this chorded navigation style — tap G, let go, then tap a second letter — from tools like Gmail and Jira, which use it specifically to avoid colliding with the browser's own native single-key and modifier shortcuts. It also allows for a larger set of distinct destinations than single keys alone could cover.
Do shortcuts work the same on a self-hosted GitLab instance as on GitLab.com?
Yes — the keyboard shortcuts are part of the GitLab web application itself, not something specific to the hosted SaaS version, so a self-managed GitLab instance running the same version will have an identical shortcut set.
Why does '/' sometimes type a literal slash instead of opening search?
If your cursor is already focused inside a text field — a comment box, an issue description, a code editor — pressing '/' types a literal character into that field instead of triggering the global search shortcut, since GitLab only intercepts single-key shortcuts when no text input currently has focus.
Can a merge request require approval from specific people before it can be merged?
Yes — you can set up approval rules requiring a minimum head count of approvers, or specifically require sign-off from designated code owners on files they're responsible for. Larger teams lean on this to enforce a consistent review bar rather than trusting every reviewer to apply the same standard voluntarily.
Do I need to switch to a separate CI tool to check if tests are passing?
No — pipeline status shows up right inside the merge request view itself, since CI/CD is a native part of GitLab rather than a bolted-on integration. You can watch a pipeline run, see which stage failed, and re-trigger it without ever leaving the page you're reviewing code on.
Does closing an issue delete its history and comments?
No, closing an issue removes it from active issue lists while fully preserving its discussion history, labels, and any linked merge requests, remaining accessible and searchable for later reference rather than being deleted.
Can GitLab be self-hosted instead of using the SaaS version?
Yes, GitLab offers a self-managed edition that organizations can host on their own infrastructure, in addition to the SaaS GitLab.com offering, giving more control over data residency and infrastructure for organizations with that requirement.
Is there a way to comment on a specific diff line without hovering to find the comment icon?
Yes — with a diff line focused via keyboard navigation, pressing C opens a comment box anchored to that exact line directly, sidestepping the need to hover with the mouse to reveal the small plus-icon comment trigger that otherwise only appears on mouseover.