读完本文,您将了解 Git 是什么、它有什么用,创建自己的第一个 GitHub repository,并配置工作环境。我们特意通过 IDE 的图形界面来讲解 Git 操作:这样更直观,刚开始也更从容,不用记住一大堆命令。

示例和界面截图使用的是 JetBrains IDE;操作名称和位置可能因版本而异。练习时请使用单独的练习 repository。在实际项目中,请遵循项目自身关于分支、提交和推送更改的规则。

这种做法还有另一个好处。Claude Code 在幕后执行的正是同一套 Git 操作,只不过用的是终端命令。当它建议创建 commit、建立分支或推送更改时,背后执行的都是普通的 Git 命令。了解 IDE 按钮背后的操作,您就能看懂 Claude Code 提出的建议,并有依据地检查和确认。

为什么需要版本控制

刚开始做项目时,您可能觉得最重要的是让代码跑起来。但很快就会发现,代码变化得比它稳定运行还要频繁。您修复 bug、添加功能、改变主意、回退,然后又把它加回来。

想象一下,您正在开发自己的项目。一切顺利,直到要开始尝试新想法。您想改点东西,又担心把可用版本弄坏。怎么办?当然是复制整个项目。最后,磁盘上就会出现这些杰作:

MyProject/
├── main.py
├── main_backup.py
├── main_final.py
├── main_final2.py
├── main_really_final.py
├── main_really1_really_final2.py

这是不是很熟悉?再想象一下,朋友也加入了项目。他也喜欢复制文件,只是有自己的一套。怎样才能知道哪个版本最新且能正常工作?谁改了什么?实验没成功时,又该怎么恢复?

没有保存下来的历史记录,就只能手动翻找文件副本:

  • 可用的代码容易丢失或弄混;
  • 没有统一的方法查找并恢复已保存的版本;
  • 两三个人一起协作很不方便;
  • 一片混乱,尝试新想法也让人顾虑重重。
"为什么需要版本控制"一节的插图

像 Git 这样的版本控制系统,正是用来解决这些问题的。

视频:在终端中学习 Git 基础

这段视频会带您了解如何通过终端使用 Git,帮助您理解 IDE 按钮背后各项操作的原理。

视频中的示例使用 Java,但 Git 的基本操作对不同编程语言都一样。

观看 Git 基础视频

Git 是什么:基本概念

Git 是一个版本控制系统,用于跟踪开发过程中的代码更改。它可以保存文件的不同版本,并协调多人共同开发同一个项目。

Repository(仓库,也常简称为 repo)是保存项目完整历史记录的地方,包括所有更改和文件版本。

Commit(提交)是一份已保存的项目快照,其中包含提交说明、作者信息,以及与父 commit 的关联。尚未提交和被忽略的文件不会进入这份快照。借助历史记录,您可以找到并恢复之前保存的版本。

历史中的连续快照ABCD
历史中的连续快照

每个 commit 都是项目的一张快照,接续在前一个快照之后,形成连续的更改历史。

Branch(分支)是指向某条开发线当前 commit 的名称。示例中的主分支叫作 main;您的 repository 可能使用其他名称,具体取决于设置和创建 repository 的方式。

上方是 main,下方是 develop。合并后,main 指向 M;M 有两个父 commit:E 和 D。ABEMCD
上方是 main,下方是 develop。合并后,main 指向 M;M 有两个父 commit:E 和 D。

从主分支 main 分出 develop 分支,以便并行开发。工作完成后,再将 develop 中的更改合并回 main。

Git 常用命令:幕后发生了什么

下面列出了一些通过终端操作 Git 的常用命令。我们会用 IDE 的图形界面,但了解各种操作背后对应哪些命令仍然很有用:每个按钮后面都有 Git 操作,Claude Code 操作您的 repository 时也会执行这些命令。可以把它们看作幕后发生的事情。

命令作用
git init在当前文件夹中初始化新的 Git repository
git clone根据 URL 将 repository 复制到新文件夹
git status显示哪些文件已更改、已暂存,以及哪些文件尚未纳入 Git 跟踪
git add将文件加入 index(staging),为下一次 commit 做准备
git commit将已暂存的更改记录为历史中的新快照
git push将本地 repository 中的 commit 推送到远程 repository
git pull获取更改,并根据设置将它们合并到当前分支
git fetch从服务器下载更改,但暂时不将它们合并到您的分支
git branch显示、创建或删除分支
git checkout / git switchswitch 用于切换分支;checkout 还可以检出单独的 commit 和恢复文件
git merge将指定分支的更改合并到当前分支
git log显示 commit 历史
git diff不带任何选项时比较工作区文件与 index;已暂存的更改需单独查看
git restore恢复选定文件;未指定来源时,工作区文件会从 index 恢复,不一定来自最近一次 commit
git reset更改 index 或当前分支的位置;具体影响取决于命令形式和模式
git stash暂时收起未完成的更改,之后可以再取回
git remote -v显示项目连接了哪些远程 repository
git configGit 配置,例如 commit 作者的姓名和 email
"Git 常用命令:幕后发生了什么"一节的插图

不必背下整张列表。刚开始时,只要知道 IDE 和智能体的操作都基于 Git 命令就够了;一次界面操作可能会执行多条命令。例如,通过 Commit 提交时会用到 git commit,Push 按钮对应的是 git push。

  • 工作区文件
  • git add → index
  • git commit → 历史记录
  • git push → 服务器

图中展示了推送流程:通过 add 准备内容,通过 commit 在本地记录下来,再通过 push 推送 commit。反向操作 pull 会获取远程 commit,并根据设置将它们合并到当前分支。

与 Claude Code 的联系

这正是 Claude Code 会替您执行的操作。当它说要创建 commit 并推送更改时,背后对应的是 git add、git commit 和 git push。您可以在同一个 IDE 窗口中查看并检查结果。

代码的四种状态

使用版本控制时,代码在逻辑上会经过四种状态:

1. Working Directory(工作目录)。您正在电脑上编辑的项目文件。

2. Staging Area(暂存区)。为下一次 commit 准备的内容。在 JetBrains IDE 中,您可以通过变更列表操作,也可以启用单独的 staging 模式。普通 Commit 窗口中的复选框用于选择要提交的内容,但并不表示这些内容已经进入 Git index。

3. Local Repository(本地 repository)。保存在您电脑上的个人代码历史副本。即使没有互联网,也能在这里创建 commit、分支并进行合并。

4. Remote Repository(远程 repository)。托管在 GitHub、GitLab 或 Bitbucket 等服务上的代码中央存储库。它能可靠地保存代码,也是团队协作的基础。

与 Claude Code 的联系

当 Claude Code 请您将新文件纳入跟踪时,它会把文件从工作目录移到 staging,这对应的是 git add 命令。加入时会暂存文件当下的内容;之后若又有修改,需要重新暂存。如果这个文件不该加入(例如它只是临时文件),您可以拒绝。

Git 和 GitHub 有什么区别

请把这两个概念分清。Git 是一款在您的电脑本地运行的程序(无需联网也能使用),负责跟踪文件版本。GitHub 是一个云服务(网站),用于托管 Git repository 的远程副本。

在 GitHub 上可以创建 repository、跟踪更改,并与他人协作编写代码。对当今的开发者来说,GitHub 个人主页也是作品集的重要组成部分,可以展示给雇主。

在 GitHub 上创建第一个 repository

创建新的 repository

步骤 1。访问 https://github.com 并注册账号。

步骤 2。点击 New repository 按钮,创建新的 repository。

New repository 按钮

步骤 3。设置 repository 的选项:

  1. repository 名称 - 起一个有意义的名字;
  2. Public 或 Private - 请慎重选择可见性。Public 对所有人开放,Private 会限制访问。如果是不会公开的个人练习,可以选择 Private。
  3. Add a README file - 新建空项目时,添加 README 会比较方便。如果要推送已有的本地历史记录,请创建不带 README 的空远程 repository,以免出现两条互不相关的初始历史。
  4. Add .gitignore - 根据项目所用技术选择模板。下拉列表提供了常见语言的现成模板。这很重要:构建工具和包管理器会生成许多临时文件与缓存,不应该让它们塞满 repository;模板可以帮助 Git 忽略这些文件;
  5. Choose a license - 可以跳过;
  6. 点击 Create repository。
"在 GitHub 上创建第一个 repository"一节的插图

步骤 4。完成,您的第一个远程 repository 已创建。

GitHub 上已创建的 repository

安装和配置 Git

下面展示的是 IntelliJ IDEA 界面。其他 JetBrains IDE 也提供类似操作,但按钮位置和菜单项名称可能因版本而异。请认准操作名称,您可以通过 IDE 的操作搜索来查找。

要使用 Git,首先需要安装它。如果您使用 JetBrains IDE,而系统中还没有 Git,IDE 很可能会主动提示安装;直接按提示操作即可。

通过 File | Close Project 关闭当前项目。在启动页面(Welcome Screen)点击 Clone Repository(某些版本中按钮名称为 Get from VCS)。

IntelliJ IDEA 启动窗口

如果您想手动安装 Git,可以从官方网站下载:https://git-scm.com/downloads。

一个重要细节

第一次创建 commit 时,Git 需要作者姓名和 email。这是 commit 的署名信息,并非账号登录信息。若要关联到 GitHub,请使用账号设置中已验证的地址;如果不想公开个人 email,也可以使用 GitHub 提供的 noreply 地址。

GitHub 会根据 email 将 commit 与个人主页关联起来。但 email 地址相同并不保证提交会出现在活动图表中,这还取决于其他条件。

要让 Claude Code 直接使用 Git 和 GitHub,需要安装什么

创建本地 commit 和分支,只需安装 Git,无需登录 GitHub。要操作远程 repository,则需要配置访问权限。GitHub CLI (gh) 是用于 PR 和其他 GitHub 功能的辅助工具,不是 Git 的必备组件。

1. Git。用于操作本地历史记录。您可以通过 IDE 或 Git 官方网站安装。

2. GitHub CLI(gh)是 GitHub 官方的命令行工具。它有什么用?借助它,Claude Code 可以直接在终端中创建 pull request、读取 issue 并查看检查状态,无需切换到浏览器。安装方式取决于您的操作系统。

您的操作系统对应的安装说明见 GitHub CLI 官方页面。安装后,使用 gh --version 检查该工具是否可用。

如果选择使用 GitHub CLI,请启动访问权限配置并按提示操作。对于 GitHub.com,您可以选择 HTTPS,并通过浏览器登录:

# 在终端中登录 GitHub 账号
gh auth login

Claude Code 可以使用 git 管理历史记录,并使用 gh 调用 GitHub 功能。如果您选择这种方式操作 GitHub,就需要安装 gh 并运行 gh auth login。创建 PR 和推送 commit 都会根据您的任务执行,前提是您先检查将要发送的内容。

main 和 master

repository 中常见的分支名称有 main 和 master。GitHub 通常建议使用 main;Git 在本地初始化时则会考虑自身版本和 init.defaultBranch 设置。请确认项目中实际使用的分支名称。

这两个名称都只是普通分支。使用示例命令时,请替换为您的 repository 中实际的分支名称。

Git 如何与 Claude Code 配合

了解 Git 的基本概念后,您就更容易看懂 Claude Code 的操作。它可以替您执行这些操作,使用时请留意以下几点:

  • 替您执行 git add、git commit、git push 等命令,也就是 IDE 按钮背后的那些操作;
  • 建议将文件纳入跟踪(git add),由您决定是否需要把它加入历史记录;
  • 提供一条写好的 commit 信息,您可以查看它将记录什么,再确认或修改;
  • 通过 GitHub CLI 创建和评论 pull request(PR,即将一个分支合并到主分支的提议),并查看检查状态。
与 Claude Code 的联系

确认之前,请先查看哪些文件和更改会进入 commit。Claude Code 会像 IDE 一样以 diff 的形式展示它们。这就是您的检查点:您始终知道哪些内容会进入项目历史并被推送到服务器。

下一篇文章:Git 日常工作流程