GitHub Desktop is a free, open-source Git client for Windows and macOS that manages project changes through a graphical interface. It works with GitHub, GitHub Enterprise and other Git hosting services. Users edit project files in an external editor, then review changes, create commits and exchange those commits with a remote repository.
Bring a project onto the computer
A repository contains project files and their change history. GitHub Desktop can create one from a project name and local folder, or add an existing Git repository. New repositories can start with a README, an ignore-file template and a license file.
Cloning copies a remote repository into a folder that the user chooses. The clone dialog accepts a URL or a repository from the user’s GitHub account. Publishing a local repository creates its GitHub counterpart, with controls for public visibility and organization ownership. When direct contributions require permission the user lacks, Desktop can offer a fork under their own account.
Choose what enters a commit
The Changes view tracks edits that the user saves in project files. Selecting a file opens its diff, which compares the edits with the previous content. GitHub Desktop offers a unified view or a split view with old content beside new content. Users can hide whitespace differences or expand the surrounding context.
File checkboxes determine which changes enter the next commit. Within a file, users can exclude individual lines while leaving other edits for a later commit. A summary describes the commit, an optional description adds detail, and co-author controls credit collaborators. Committing records those choices in the local branch; pushing sends the commit to its remote counterpart.
Branches and worktrees
Branches keep separate lines of development within a repository. GitHub Desktop creates a branch from an existing branch or an earlier commit. When users switch branches with unfinished edits, they can bring those edits along or leave them on the original branch.
Stashing temporarily removes edits from working files without creating a commit. Users can later restore or discard that change set. Desktop holds one stash set at a time.
Worktrees give different branches their own directories at the same time. Users name a worktree and choose an existing branch or create a new one. The Worktree menu switches the active directory, so another branch can stay open elsewhere. Desktop also renames and deletes additional worktrees. It cannot rename or delete the main worktree.
Exchange and combine changes
Fetch origin checks the remote branch for commits. Pull origin brings remote commits into the local branch, while Push origin sends local commits outward. GitHub Desktop also merges another branch into the current branch or rebases the current branch onto another.
Merge conflicts stop a merge until the user resolves competing edits. Rebasing changes branch history, and updating the corresponding remote branch can require a force push. The app provides separate merge and squash-and-merge operations; the latter combines the incoming changes into a single commit.
Inspect and revise history
The History view shows commit messages, committer usernames, timestamps and commit identifiers. Selecting a commit or consecutive range reveals its changes, with individual files available for closer inspection. GitHub Desktop offers distinct operations for revising that history:
| Operation | Result |
|---|---|
| Undo | Returns a local commit’s changes to working files before the user pushes it. |
| Amend | Changes the latest commit’s message or adds further edits to it. |
| Revert | Adds a new commit that reverses an earlier commit’s changes. |
| Cherry-pick | Copies a commit’s changes onto another branch. |
| Squash or reorder | Combines commits or changes their sequence. |
Users can drag commits to combine them, reorder them or copy them to a branch. Rewriting history that already exists remotely can require a force push.
Review a pull request locally
After publishing a branch, users can preview its differences against a base branch. GitHub Desktop then opens GitHub in the browser to complete the pull request. It also checks out an existing pull request’s branch for inspection or further editing.
Check badges show pending, passing or failing checks, and users can rerun individual checks or groups. Comments, formal reviews and pull-request merging take place on GitHub.
Copilot and large files
With Copilot access, GitHub Desktop generates commit messages from file changes and repository instructions. Copilot can also explain merge conflicts and propose resolutions that users accept or edit. Users select a model through a picker, including a custom provider or local model. Custom providers still require Copilot access.
GitHub Desktop includes Git LFS for large files. Users configure its tracking through the command line, after which Desktop manages those files alongside the rest of the repository.






