⌥+⌃AltPlusCtrl

GitHub Desktop Keyboard Shortcuts

GitHub Desktop deliberately exposes a smaller, simpler shortcut set than the full Git command line, since its entire purpose is making common Git operations approachable without memorizing CLI flags. The shortcuts here cover commit, branch, and sync operations, which together make up the overwhelming majority of what most users do in the app day to day. Designers, technical writers, and developers who want Git's benefits without memorizing command-line flags make up much of GitHub Desktop's audience, and for that group the branch-switching and commit shortcuts cover nearly everything they'll ever need, while anyone who eventually grows comfortable with rebasing, interactive staging, or complex merge conflict resolution typically graduates to the terminal for those specific tasks since GitHub Desktop deliberately doesn't try to expose every Git capability through its simplified interface. Cloning a new repository and creating a pull request both mark the boundary points where GitHub Desktop's local-focused feature set hands off to the browser-based GitHub website, since actually reviewing, commenting on, and merging a pull request happens on GitHub's own web interface rather than inside the desktop app, which stays deliberately scoped to the local commit-branch-sync workflow rather than trying to replicate GitHub's full web experience.

Commit Branch

ActionWindowsMacDescription
Commit staged changesCtrl+EnterCmd+EnterCommits whatever changes are currently staged with the summary text typed into the commit message box, equivalent to clicking the Commit button.
Create new branchCtrl+Shift+NCmd+Shift+NBrings up the new-branch dialog, basing the new branch off whichever one is currently checked out.
Open branch switcherCtrl+1 or Ctrl+BCmd+1 or Cmd+BOpens a searchable list of local and remote branches to switch to, faster than scrolling a long branch list manually in repositories with many branches.
Stage all changesCtrl+Shift+A (varies by version, often via checkbox click)Cmd+Shift+AStages every modified, added, and deleted file shown in the changes list in one action, rather than checking each file individually.
Discard changes on selected fileRight-click file > Discard (no universal default key)Right-click file > DiscardReverts a file back to its last committed state, permanently discarding uncommitted edits — GitHub Desktop deliberately doesn't bind this to a single keystroke given how destructive an accidental press would be.
Switch to Changes viewCtrl+1Cmd+1Switches the main panel to the Changes view, showing currently modified, added, and deleted files ready for staging and committing.

Sync History

ActionWindowsMacDescription
Push to remoteCtrl+PCmd+PSends whatever's been committed on the current branch up to its tracked remote, or offers to publish the branch first if GitHub doesn't have a remote copy of it yet.
Pull from remoteCtrl+Shift+PCmd+Shift+PPulls down the latest commits from the remote tracking branch and integrates them into your current local branch, merging or rebasing depending on how the repository is configured.
Switch to History viewCtrl+2Cmd+2Switches the main panel from the Changes view to History, showing the commit log for the current branch with diffs viewable per commit.
Open repository in default editorCtrl+Shift+A (varies; often a dedicated button)Cmd+Shift+ALaunches your configured external editor (commonly VS Code) directly at the repository's root folder, bridging from GitHub Desktop's Git operations into your actual code editing.
Open repository listCtrl+OCmd+OOpens the repository switcher, letting you jump between multiple local repositories added to GitHub Desktop without needing to reopen the app for each one.
Refresh current repositoryCtrl+RCmd+RManually refreshes the current repository's status, useful after making changes outside GitHub Desktop (like editing a file in a separate editor) to ensure the Changes view reflects the latest state.
Open repository settingsRepository menu > Repository settings (no keyboard shortcut)Opens settings scoped to the current repository, including remote URL configuration and ignored files, distinct from GitHub Desktop's own app-wide preferences.
Create a pull requestCtrl+R (varies by version) or Branch menu > Create Pull RequestCmd+ROpens a browser tab to GitHub's pull request creation page pre-filled with the current branch, bridging from local branch work into GitHub's actual PR review workflow, which GitHub Desktop itself doesn't fully replicate in-app.
Clone a repositoryCtrl+Shift+OCmd+Shift+OOpens the clone dialog for adding a new repository, either from GitHub directly by browsing your accessible repos or by pasting a URL for any Git remote.
View history of a specific fileSelect commit in History, click file (no dedicated global shortcut)Shows the diff for a specific file within a selected commit, letting you trace how one particular file changed across the project's commit history without checking out each commit individually.

Frequently Asked Questions

Why doesn't GitHub Desktop bind a shortcut to Discard Changes?

Discarding changes is irreversible — it permanently throws away uncommitted edits to a file, restoring it to the last commit. GitHub Desktop deliberately requires a deliberate right-click and explicit confirmation for this action rather than a single keystroke, specifically to prevent an accidental keypress from destroying work that can't be recovered afterward.

What's the difference between Pull and Fetch in terms of shortcuts?

GitHub Desktop's Pull shortcut (Ctrl+Shift+P / Cmd+Shift+P) both fetches remote changes and merges or rebases them into your current branch in one action. A pure Fetch (checking for remote updates without merging them locally) is generally available via the Repository menu rather than its own dedicated default keyboard shortcut, since Pull covers the common case for most users.

Can I commit without typing a summary message?

No — the Commit button (and its Ctrl+Enter / Cmd+Enter shortcut) stays disabled until you've typed at least a commit summary, since Git itself requires a non-empty commit message. Pressing the shortcut with an empty summary field simply does nothing rather than committing with a blank message.

Why does GitHub Desktop sometimes show a file as changed even though I didn't edit its content?

Line-ending differences (a file saved with CRLF line endings on Windows versus LF on Mac/Linux, especially in a repository shared across different operating systems) or a tool that silently touched a file's modification metadata without changing its actual content can both cause a file to appear modified in the Changes list even when the visible content looks identical to the last committed version.

Can I use GitHub Desktop and the Git command line interchangeably on the same repository?

Yes — GitHub Desktop operates on the same underlying .git folder and repository state that the command line uses, so switching between the two is safe as long as you refresh GitHub Desktop (Ctrl+R / Cmd+R) after making command-line changes so its UI reflects the current actual state rather than a stale cached view.

Why can't I find a shortcut for resolving merge conflicts?

GitHub Desktop surfaces merge conflicts visually and lets you open conflicted files in your configured external editor to resolve them manually, but the actual conflict-resolution editing happens outside GitHub Desktop's own interface in most cases, which is why there's no dedicated in-app keyboard shortcut for stepping through or resolving conflict markers the way a dedicated merge tool might offer.

Is there a shortcut for viewing a diff of a specific file before staging it?

Clicking a file in the Changes list displays its diff automatically in the right-hand panel without needing a separate keyboard shortcut, since GitHub Desktop treats viewing a diff as the default state of having that file selected rather than a distinct triggerable action requiring its own binding.

Does GitHub Desktop support keyboard-only navigation of the commit history list?

The History view supports arrow-key navigation between commits once a commit in the list has focus, letting you step through commit history and view each one's diff without needing to click each entry individually with the mouse.

Does GitHub Desktop let me review and merge a pull request without leaving the app?

Creating a pull request opens a browser tab to complete the process on GitHub's own web interface, since GitHub Desktop is focused on local Git operations (commits, branches, pushing, pulling) rather than replicating GitHub's full PR review and merge UI in-app, which is a deliberate scope limitation consistent with the app's overall philosophy of staying simple rather than becoming a full GitHub client.