教程

GitHub Desktop 教程:如何下载、安装并不用命令行使用 Git

更新于: · Skillaria.Top

GitHub Desktop 是 GitHub 为 Windows 和 macOS 提供的免费应用,通过按钮完成 Git 的主要操作:克隆、commit、push、pull、分支、合并和解决冲突。可以到官网 desktop.github.com 下载,安装后登录 GitHub 账号即可克隆仓库。

GitHub Desktop 是什么

GitHub Desktop 是 GitHub 为 Windows 和 macOS 发布的免费开源应用。它在窗口中显示修改过的文件、提交历史和分支,并通过点击按钮执行 Git 的常用命令。应用内置了一份 Git,因此无需单独安装 Git 就能使用。

如果简单回答「git desktop 是什么」:它是专为 GitHub 设计的 Git 图形客户端。它可以一键克隆你的仓库,创建 pull request 并显示检查状态;它也能连接任何通过 HTTPS 访问的远程仓库,例如 GitLab 或自建服务器上的仓库。

GitHub Desktop 适合初学者、设计师、技术文档作者,以及所有需要清晰的「修改、提交、推送」流程的人。有经验的开发者用它直观地查看 diff,并选择性地提交某几行代码;复杂操作则在终端中完成。

如何下载 GitHub Desktop

官方下载地址是 desktop.github.com。网站会自动识别你的系统,并提供 Windows 安装程序或 macOS 压缩包。请只从这里或从 GitHub 上 desktop/desktop 仓库的 Releases 页面下载,第三方网站上标注「免费下载」的版本可能夹带任何东西。

官方没有提供 Linux 版本。社区维护的分支(仓库 shiftkey/desktop)提供 .deb、.rpm 和 AppImage 包,但它不是官方构建。在 Linux 上,更方便的做法是使用终端,或编辑器内置的 Git 客户端。

在 Windows 上安装

  1. 运行下载的 GitHubDesktopSetup 文件。
  2. 安装程序不会提出任何问题:应用会安装到当前用户的配置目录中,并立即打开。
  3. 无需管理员权限,应用会自动下载更新。

如果要在企业的电脑上安装,可以使用单独的 MSI 安装包,请在 GitHub Desktop 的官方文档中查找。

在 macOS 上安装

  1. 解压下载的 zip 压缩包。
  2. 将 GitHub Desktop 拖入「应用程序」(Applications)文件夹。
  3. 启动应用,并确认打开这个从互联网下载的程序。

应用提供适用于 Intel 和 Apple Silicon 处理器的版本,网站通常会自动推荐合适的一个。也可以通过 Homebrew 安装:

brew install --cask github

登录账号与首次设置

首次启动时,GitHub Desktop 会提示你登录 GitHub.com。点击登录按钮后会打开浏览器,在浏览器中确认授权即可。你不需要在应用里输入密码,双因素认证也在浏览器中按常规方式完成。如果使用 GitHub Enterprise 服务器,则有单独的登录选项。

接着,应用会要求你设置 Git 的用户名和邮箱,它们会写入每一次提交。这正是 git config --global 设置的 user.name 和 user.email,所以如果你之前已经配置过 Git,这些信息会自动填入。若希望提交关联到你的 GitHub 个人主页,请填写已添加到账号中的邮箱,或使用 ID+用户名@users.noreply.github.com 格式的隐私邮箱。

之后可以在设置中修改这些选项:Windows 在 File → Options 菜单中,macOS 在 GitHub Desktop → Settings 菜单中。同一位置还可以选择从应用中打开的外部编辑器(例如 VS Code)和终端,以及界面主题。

克隆仓库

克隆就是下载远程仓库的完整副本,包括全部历史。在 GitHub Desktop 中,菜单为 File → Clone repository。窗口中有三个标签:你在 GitHub.com 上的仓库、GitHub Enterprise 上的仓库,以及 URL 标签页,可以粘贴任何地址,包括 GitLab 上的地址。

  1. 从列表中选择仓库,或粘贴 URL。
  2. 选择本地文件夹(Local path)。
  3. 点击 Clone,等待下载完成。

这与 git clone 命令的效果相同。在 GitHub 仓库页面的 Code 按钮菜单中,有一个 Open with GitHub Desktop 选项,它会打开应用并自动填入地址。如果你克隆的是一个没有写入权限的他人仓库,应用在第一次尝试推送修改时会提示你创建 fork。

已有的 Git 项目文件夹可以通过 File → Add local repository 添加;新建仓库则用 File → New repository,可以直接选择 .gitignore 模板、许可证,并创建 README。

如何在 GitHub Desktop 中 commit

左侧的 Changes 标签列出所有修改过的文件,右侧显示所选文件的 diff:删除的行为红色,新增的行为绿色。文件旁的复选框决定它是否进入本次提交。它相当于暂存区(staging area),也就是 git add 命令。

  1. 取消勾选不想提交的文件。
  2. 如有需要,在 diff 中点击单独的行将其排除,这就是部分提交,类似 git add -p。
  3. 在底部的 Summary 中输入简短说明,如有需要可在 Description 中填写详细内容。
  4. 点击 Commit to <分支名> 按钮。

提交只会在本地创建,还没有发送到服务器。用 GitHub Desktop 做 commit 很适合小而有意义的提交:每次提交包含什么内容一目了然。如果提交有误,提交后底部会立即出现 Undo 按钮,它会撤销最后一次提交,并把修改退回工作目录,前提是尚未推送。

不应进入仓库的文件,可以通过文件的右键菜单排除:忽略选项会把它追加到 .gitignore 中。若要撤销尚未提交的修改,同一菜单中有 Discard changes 选项。修改会被删除(在 Windows 和 macOS 上会放入系统回收站),但最好把它当作不可逆的操作。

Push、pull 和 fetch:与服务器同步

顶部栏的主按钮会根据情况改变名称。在这里,GitHub Desktop push 和 pull 只需一次点击。

按钮上的文字会发生什么对应的 Git 命令
Publish repository本地仓库还不在 GitHub 上:创建远程仓库并推送创建 remote + git push -u
Publish branch分支只存在于本地git push -u origin 分支名
Fetch origin检查服务器上是否有新提交git fetch
Pull origin服务器上有新提交,取回到本地git pull
Push origin有本地提交待发送,推送出去git push

按钮旁边会显示带向上和向下箭头的提交数量,表示需要推送多少提交、需要拉取多少提交。应用会在后台定期执行 fetch,因此当同事推送了新内容时,Pull 按钮会自动出现。

如果你的分支与服务器都有新的提交,推送会被拒绝。请先执行 Pull origin:Git 会合并这些修改,如果修改有重叠,就会出现冲突。只有在执行了改写已推送提交的操作(例如 rebase)之后,应用才会提示你强制推送(force push)。

分支:创建、切换与 checkout

分支通过顶部栏的 Current branch 下拉菜单管理。菜单中列出本地和远程分支,可以搜索,并有 New branch 按钮。在列表中选择分支,就是 git desktop checkout:应用会把工作目录切换到该分支。如果选择的远程分支在本地还不存在,应用会创建一个跟踪该远程分支的本地分支。

新分支基于当前分支或默认分支创建,如果有选择,应用会询问你。新分支创建后只存在于你的电脑上,因此顶部按钮会变成 Publish branch。重命名和删除分支可以在 Branch 菜单或分支列表的右键菜单中进行;删除时可以勾选同时删除服务器上的分支。

分支工作完成后,Branch 菜单中有 Create pull request 选项:它会在浏览器中打开 GitHub 的创建 pull request 页面。评审和合并则在网站上完成。

在 GitHub Desktop 中 merge 与 rebase

要把另一个分支合并进当前分支,在 Current branch 菜单中选择 Choose a branch to merge into <分支名>(Branch 菜单中也有)。应用会预先显示将合并多少提交以及是否会产生冲突。这就是 git desktop merge,即普通的 git merge。

同一菜单中还有 Squash and merge,它把分支的所有提交压缩成一个;以及 Rebase current branch,即 git desktop rebase,它把你的提交移到所选分支之上。对于已推送的分支,rebase 之后服务器和本地的历史会不同,此时推送按钮会变成 Force push origin。只在你独自工作的分支上这样做。

在 History 标签页中,你可以拖动提交:拖到另一个分支上(相当于 cherry-pick),拖到另一个提交上(squash),或调整顺序。应用中没有完整的交互式 rebase,要使用全部操作,需要在终端中运行 git rebase -i。

合并冲突

如果两个分支修改了同一行,在 merge、pull 或 rebase 时会弹出一个列出冲突文件的窗口。对每个文件,你可以在外部编辑器中打开,或整体选择某一个版本:你的版本或传入的版本。

在编辑器中,冲突的样子如下:

<<<<<<< HEAD
const limit = 20;
=======
const limit = 50;
>>>>>>> feature/pagination

保留需要的内容,删除标记并保存文件。当所有文件中的标记都消失后,GitHub Desktop 会把它们标记为已解决,并启用继续合并的按钮,它会创建一个 merge 提交。如果出了问题,可以在同一窗口中点击取消按钮终止合并,这相当于 git merge --abort。

GitHub Desktop 中的 git stash

主窗口中没有单独的「stash」按钮,但功能是有的。当你带着未提交的修改切换到其他分支时,应用会询问如何处理这些修改:保留在当前分支,还是带到新分支。选择「保留」时,修改会被暂存到 stash 中,这就是 GitHub Desktop 中 git stash 的工作方式。

也可以通过修改列表的右键菜单手动暂存(Stash all changes)。回到该分支后,你会在 Changes 标签页底部看到 Stashed changes 一行:可以在那里查看暂存的文件,并恢复(Restore)或删除它们。

限制:GitHub Desktop 每个分支只保存一个 stash。如果需要多个记录,或需要使用 git stash pop 指定某一条,或 git stash apply stash@{1},请使用终端。应用可以通过 Repository 菜单在该仓库目录中打开终端。

GitHub Desktop 中的 Git LFS

Git LFS 把大型二进制文件(视频、PSD、模型)存放在单独的服务器上,仓库中只保留指针文件。GitHub Desktop 支持 LFS:克隆或打开使用了 LFS 的仓库时,它会提示初始化 Git LFS,之后大文件会自动下载和推送。

但在界面中无法指定哪些文件由 LFS 跟踪。这需要在终端中做一次设置,之后 GitHub Desktop 中的 git lfs 就会透明地工作:

git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Track PSD files with Git LFS"

注意配额:GitHub 免费账户的 LFS 存储和流量有限制,具体数值请在账户的计费设置中查看。

Reset、revert 与历史

History 标签页显示当前分支的提交以及每次提交的修改。通过提交的右键菜单可以使用:

  • Revert changes in commit:创建一个撤销所选提交的新提交。即使提交已推送也是安全的。
  • Create branch from commit 和 Create tag:从历史上的任意位置创建分支或标签。
  • Amend commit:针对最后一次提交,修改说明或添加文件。
  • Reset to commit:新版本的应用中提供,把分支回退到所选提交,并保留工作目录中的修改,相当于 git reset --mixed。

界面中没有会丢弃修改的 git desktop reset(即 git reset --hard),这是有意为之,以免新手丢失工作内容。如果确实需要,请在终端中执行;丢失的提交可以通过 git reflog 找回。

什么时候更适合命令行

GitHub Desktop 覆盖了日常工作的大部分流程,但很多功能它没有,或使用不便:

  • 包含全部操作的交互式 rebase、git bisect、git reflog、git worktree;
  • 多条 stash 记录、子模块、精细的 remote 配置;
  • 通过 SSH 在服务器上工作,以及在脚本和 CI 中自动化;
  • 没有官方版本的 Linux。

此外,面试时问的正是命令,而理解 fetch、merge 和 rebase 各自的作用,在使用图形界面时也很有帮助。务实的做法是:熟练掌握命令行,并在能节省时间的地方使用应用,例如查看 diff、部分提交和解决冲突。在 GitHub Desktop 中,还可以通过 Repository 菜单直接在项目目录中打开终端。

总结

GitHub Desktop 是在 Windows 和 macOS 上使用 Git 的简单免费方式:从 desktop.github.com 下载,登录账号,克隆仓库,然后用按钮完成提交、推送、拉取、分支和冲突处理。对于 stash、LFS 和 reset,它的功能有限,复杂操作仍需终端完成。远程仓库、push、pull 以及通过 pull request 协作,在本课程的 Git 实践中都有详细讲解。

常见问题

GitHub Desktop 免费吗?

免费。应用完全免费,并以开源形式发布;只有在需要 GitHub 的付费套餐时才需要付费。

使用 GitHub Desktop 还需要单独安装 Git 吗?

不需要,应用内置了自己的 Git。如果你还想在终端中工作,请为你的系统单独安装 Git。

GitHub Desktop 可以用于 GitLab 或 Bitbucket 吗?

可以,在 URL 标签页中使用 HTTPS 地址克隆即可。与 pull request 的集成和账号登录只适用于 GitHub。

GitHub Desktop 有中文界面吗?

官方界面是英文的。按钮名称简短,并与 Git 命令对应,因此上手不难。

为什么 GitHub Desktop 看不到文件的修改?

最常见的原因是文件匹配了 .gitignore 中的规则,或者打开的是另一个仓库文件夹。请在 Current repository 菜单中检查路径,并查看 .gitignore 的内容。

通过视频学习本主题

课程“Git 从零基础到胜任开发者”结合实践详细讲解了这一主题。

前往课程