GitHub Desktop: how to download, install and use Git without the command line
GitHub Desktop is a free app from GitHub for Windows and macOS that runs the core Git operations with buttons: clone, commit, push, pull, branches, merge and conflict resolution. Download it from the official site desktop.github.com, sign in to your GitHub account after installing, and clone a repository.
What GitHub Desktop is
GitHub Desktop is a free, open-source app that GitHub publishes for Windows and macOS. It shows changed files, commit history and branches in one window and runs the basic Git commands with clicks. The app ships with its own copy of Git, so you do not have to install Git separately to use it.
If you are asking what GitHub Desktop is in one sentence: it is a graphical Git client built around GitHub. It clones your repositories in one click and lets you create pull requests and check their status. It also works with any other remote repository over HTTPS, for example on GitLab or on your own server.
GitHub Desktop suits beginners, designers, technical writers and anyone who wants a clear cycle of "change it, commit it, push it." Experienced developers use it to review diffs visually and to commit selected lines, and they do complex operations in the terminal.
How to download GitHub Desktop
The official download address is desktop.github.com. The site detects your system and offers an installer for Windows or a zip archive for macOS. Download the app only from there or from the releases page of the desktop/desktop repository on GitHub. Builds offered as "free GitHub Desktop download" on third-party sites can contain anything.
There is no official version for Linux. A community-supported fork (repository shiftkey/desktop) provides .deb, .rpm and AppImage packages, but it is an unofficial build. On Linux it is more convenient to work in the terminal or with the built-in Git client of your editor.
Installing on Windows
- Run the downloaded GitHubDesktopSetup file.
- The installer asks no questions: the app is installed into the profile of the current user and opens right away.
- Administrator rights are not needed, and the app downloads its updates by itself.
For computers in an organization there is a separate MSI installer. Look for it in the GitHub Desktop documentation.
Installing on macOS
- Unzip the downloaded zip archive.
- Drag GitHub Desktop into the Applications folder.
- Launch the app and confirm that you want to open a program downloaded from the internet.
Builds exist for Intel and Apple Silicon processors. The site usually offers the right one automatically. You can also install the app with Homebrew:
brew install --cask github
Signing in and first setup
On the first launch, GitHub Desktop offers to sign in to GitHub.com. Click the sign-in button, and your browser opens so you can confirm that the app may access your account. You do not enter your password in the app itself, and two-factor authentication runs in the browser as usual. For a GitHub Enterprise server there is a separate sign-in option.
Then the app asks you to set up Git: your name and e-mail, which go into every commit. These are the same user.name and user.email set with git config --global, so if Git is already configured, the values are filled in for you. To link your commits to your GitHub profile, use an e-mail address added to your account, or the service address in the form ID+login@users.noreply.github.com.
You can change these settings later. On Windows, open File → Options. On macOS, open GitHub Desktop → Settings. The same place lets you pick the external editor (for example, VS Code) and the terminal that the app opens, as well as the color theme.
Cloning a repository
To clone means to download a copy of a remote repository together with its full history. In GitHub Desktop, use File → Clone repository. The window has three tabs: your repositories on GitHub.com, repositories on GitHub Enterprise, and a URL tab where you can paste any address, including one from GitLab.
- Choose a repository from the list or paste its URL.
- Choose a local folder in the Local path field.
- Click Clone and wait until the download finishes.
The git clone command does the same thing. On a repository page on GitHub, the Code button menu has the item Open with GitHub Desktop. It opens the app with the address already filled in. If you clone someone else's repository and you have no write access, the app offers to create a fork the first time you try to push changes.
To add an existing folder that already contains a Git project, use File → Add local repository. To create a new repository, use File → New repository. You can pick a .gitignore template, a license and create a README right away.
How to commit in GitHub Desktop
The Changes tab on the left lists all changed files. The right side shows the diff of the selected file: deleted lines in red and added lines in green. The checkbox next to a file decides whether the file goes into the commit. This works like the index (staging area) and the git add command.
- Uncheck the files you do not want to commit.
- If needed, click individual lines in the diff to exclude them. This is how a partial commit works, similar to
git add -p. - At the bottom, type a short description in the Summary field and, if you like, details in the Description field.
- Click the button Commit to <branch name>.
The commit is created only locally. It has not gone to the server yet. Making small, meaningful commits with git desktop commit is easy, because you can see exactly what goes into each one. If a commit contains a mistake, a button called Undo appears at the bottom right after the commit. It cancels the last commit and returns the changes to the working folder, as long as the commit has not been pushed.
You can exclude files that must not end up in the repository through the file's context menu: the ignore option appends the file to .gitignore. To discard uncommitted edits, the same menu has Discard changes. The changes are deleted (moved to the system trash on Windows and macOS), but treat this as irreversible.
Push, pull and fetch: syncing with the server
The main button in the top bar changes its label depending on the situation. This is where git desktop push and git desktop pull happen with one click.
| Button label | What happens | Git command |
|---|---|---|
| Publish repository | The local repository is not on GitHub yet: create it there and push | create a remote + git push -u |
| Publish branch | The branch exists only locally | git push -u origin branch |
| Fetch origin | Check whether there are new commits on the server | git fetch |
| Pull origin | The server has new commits: bring them in | git pull |
| Push origin | You have local commits: send them | git push |
Next to the label, the app shows the number of commits with up and down arrows: how many to send and how many to receive. The app fetches in the background from time to time, so the Pull button appears on its own when your teammates push something.
If your branch and the server branch have diverged, meaning you both have new commits, the push is rejected. First click Pull origin. Git merges the changes, and if they overlap, a conflict appears. The app offers a force push only after operations that rewrite commits you have already pushed, for example after a rebase.
Branches: creating, switching and checkout
Branches are managed through the Current branch drop-down menu in the top bar. It lists local and remote branches and has a search field and a New branch button. Selecting a branch in the list is git desktop checkout: the app switches the working folder to that branch. If a remote branch does not exist locally yet, just select it, and a local branch with tracking is created.
A new branch is created from the current branch or from the default branch. The app asks if there is a choice. The new branch exists only for you, so the top button changes to Publish branch. You rename or delete a branch through the Branch menu or the branch's context menu in the list. When you delete a branch, you can tick the option to delete it on the server too.
When the work in a branch is ready, the Branch menu has the item Create pull request. It opens your browser on the page for creating a pull request on GitHub. Review and merge happen on the website.
Merge and rebase in GitHub Desktop
To merge another branch into the current one, choose Choose a branch to merge into <branch> in the Current branch menu. The Branch menu has the same item. The app shows in advance how many commits will be merged and whether there will be conflicts. This is how git desktop merge works: it is a regular git merge.
The same menu has Squash and merge, which squashes all commits of a branch into one, and Rebase current branch. The latter is git desktop rebase: it replays your commits on top of the chosen branch. After a rebase of a branch you have already pushed, the history on the server and on your machine differ, and the Push button changes to Force push origin. Do this only in your own branch, where nobody else works.
On the History tab you can drag commits: onto another branch (this is cherry-pick), onto each other (squash), or to change their order. There is no interactive rebase with the full set of actions in the app. For that you need git rebase -i in the terminal.
Merge conflicts
If the same lines were changed in both branches, a merge, pull or rebase shows a window with a list of conflicting files. For each file you can open it in an external editor or choose one version in full: yours or the incoming one.
In the editor, a conflict looks like this:
<<<<<<< HEAD
const limit = 20;
=======
const limit = 50;
>>>>>>> feature/pagination
Keep the version you need, delete the markers and save the file. When the markers are gone from all files, GitHub Desktop marks them as resolved and enables the button that continues the merge. That button creates the merge commit. If something goes wrong, you can abort the merge with the cancel button in the same window. This is the equivalent of git merge --abort.
Git stash in GitHub Desktop
The main window has no separate "stash" button, but the mechanism exists. When you switch to another branch with uncommitted changes, the app asks what to do with them: leave them on the current branch or carry them over to the new one. The option to leave them stores the changes in a stash. This is how git stash works in GitHub Desktop.
You can stash changes manually through the context menu of the changes list (item Stash all changes). When you return to the branch, you will see a line Stashed changes at the bottom of the Changes tab. There you can look at the stashed files and restore them (Restore) or delete them.
Limitation: GitHub Desktop keeps only one stash per branch. If you need several entries, use git stash pop with a specific entry, or git stash apply stash@{1}, in the terminal. The app opens the terminal in the right folder through the Repository menu.
Git LFS in GitHub Desktop
Git LFS stores large binary files (videos, PSD files, models) on a separate server, and the repository keeps only pointers to them. GitHub Desktop supports LFS. When you clone or open a repository that uses LFS, it offers to initialize Git LFS, after which it downloads and uploads large files automatically.
However, the interface does not let you choose which files LFS tracks. You set this once in the terminal, and after that git lfs works transparently in GitHub Desktop:
git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Track PSD files with Git LFS"
Keep the quotas in mind. Free GitHub accounts have limits on LFS storage and bandwidth. Check the current limits in your account's billing settings.
Reset, revert and history
The History tab shows the commits of the current branch and the changes in each one. The context menu of a commit offers:
- Revert changes in commit creates a new commit that undoes the selected one. It is safe even for commits you have already pushed.
- Create branch from commit and Create tag create a branch or a tag from any point in the history.
- Amend commit works on the last commit: fix the message or add files.
- Reset to commit is available in newer versions of the app. It moves the branch back to the selected commit and keeps the changes in the working folder, like
git reset --mixed.
There is no git desktop reset option in the interface that discards changes (git reset --hard). This is deliberate, so that a beginner does not lose work. If you need it, use the terminal. You can find lost commits with git reflog.
When the command line is the better choice
GitHub Desktop covers the daily work cycle, but many things are unavailable or inconvenient in it:
- interactive rebase with all actions,
git bisect,git reflog,git worktree; - several stash entries, submodules, fine-grained remote configuration;
- working on a server over SSH and automating things in scripts and CI;
- Linux, where there is no official version.
Also, interviews ask about commands directly, and understanding what fetch, merge and rebase do helps even when you use a GUI. A practical approach is to know the command line well and use the app where it saves time: to review diffs, make partial commits and resolve conflicts. From GitHub Desktop, you can open a terminal in the project folder through the Repository menu.
Summary
GitHub Desktop is a simple, free way to work with Git on Windows and macOS. Download it from desktop.github.com, sign in, clone a repository, and commit, push, pull, branch and resolve conflicts with buttons. Its stash, LFS and reset features are limited, and complex operations stay in the terminal. Remote repositories, pushing, pulling and team work through pull requests are covered hands-on in our Git course.
FAQ
Is GitHub Desktop free?
Yes. The app is completely free and open source. You pay only if you want a paid GitHub plan.
Do I need to install Git separately for GitHub Desktop?
No, the app includes its own copy of Git. If you also want to work in the terminal, install Git for your system separately.
Can I use GitHub Desktop with GitLab or Bitbucket?
Yes. Clone the repository by its HTTPS address on the URL tab. Pull request integration and sign-in with an account work only for GitHub.
Is GitHub Desktop available in my language?
The interface is in English. The button names are short and match Git commands, so the app is easy to learn.
Why doesn't GitHub Desktop show changes in my files?
Most often the file matches a rule in .gitignore, or you have opened a different repository folder. Check the path in the Current repository menu and the contents of .gitignore.
This topic is covered in depth with practice in the course “Git from Scratch to Confident Developer”.
- GitHub and Remote Repositories: Your Code in the Cloud
- Team Collaboration: Forks, Feature Branches, and Pull Requests