Internal Training — Git for Everyone

Git 不是程序员的专利,
是团队协作的基础设施。

在 PRD → PR 的新模式下,产品、设计、商务都需要通过 Git 参与协作。 这份培训将用最直白的语言,帮助你在 30 分钟内掌握 Git 的核心概念和日常操作。

阅读时间 ~30 分钟
面向全体团队成员
零基础友好

01 — 为什么每个人都要学 Git

你其实已经在做版本管理

每次你把文件命名为"方案_v1"、"方案_v2_最终版"、"方案_v2_最终版_真的最终"的时候,你就是在做版本管理——只不过是最原始的方式。Git 把这件事自动化了,而且让整个团队可以同时编辑同一个项目,互不干扰。

在我们的新协作模式中,所有人围绕同一个代码仓库工作。产品经理编辑需求文档,设计师更新设计规范,工程师编写代码——所有这些都发生在同一个 Git 仓库里。Git 就是我们的"协作画布"。

核心认知转变

Git 不是"写代码才需要的工具",而是"团队协作的基础设施"——就像 Figma 之于设计,飞书之于沟通。

传统文件管理 vs Git 版本管理

左:传统的"另存为"式版本管理 → 右:Git 的时间线式版本管理

02 — 五个核心概念

用生活比喻理解 Git

Git 的术语听起来很技术,但背后的概念其实非常直觉。 掌握以下五个概念,你就能理解 90% 的日常协作场景。

仓库 Repository

repo

想象一个有完整记忆的文件柜——它不仅存放所有文件,还记得每一次修改的时间、内容和修改人。你可以随时回到任何一个历史状态。

仓库是 Git 管理的项目根目录。它包含项目的所有文件、文件夹,以及完整的修改历史。每个项目对应一个仓库,通常托管在 GitHub 上。团队所有人都从同一个仓库获取最新内容,也向同一个仓库提交自己的修改。

常用命令
# 克隆一个远程仓库到本地(只需要做一次)
git clone https://github.com/company/project-name.git

# 进入项目目录
cd project-name

clone 就是把远程仓库完整复制到你的电脑上。之后你就可以在本地查看和编辑文件了。

提交 Commit

commit

就像游戏存档——每次你完成一个阶段性工作,就「存个档」。如果后面改坏了,随时可以读取之前的存档回到那个状态。

Commit 是 Git 中最基本的操作。每次 commit 会记录你修改了哪些文件、修改了什么内容、是谁在什么时间做的修改,以及一段描述信息。多个 commit 串起来就形成了项目的完整历史时间线。

常用命令
# 查看当前有哪些文件被修改了
git status

# 把修改的文件加入「暂存区」(准备存档)
git add INTENT.md

# 提交(存档),附上一句说明
git commit -m "更新了用户画像描述"

先用 add 选择要存档的文件,再用 commit 正式存档。-m 后面的文字是对这次修改的简短说明。

分支 Branch

branch

想象你正在写一篇文章,你想尝试一个全新的开头,但又不想丢掉现在的版本。于是你复印了一份,在复印件上大胆修改。满意了就替换原稿,不满意就扔掉复印件——原稿毫发无损。

分支让你在不影响主线(main 分支)的情况下,独立进行修改。每个人在自己的分支上工作,完成后再合并回主线。这样即使你的修改出了问题,也不会影响其他人。分支是团队并行协作的基础。

常用命令
# 创建一个新分支并切换到它
git checkout -b feature/update-intent

# 查看当前在哪个分支
git branch

# 切换回主分支
git checkout main

分支命名建议:feature/功能名、fix/修复名、docs/文档名。斜杠前是类型,后面是简短描述。

Git 分支模型示意图

分支就像树的枝干——从主干(main)分出去,各自生长,最终合并回主干

合并 Merge

merge

你和同事各自在自己的复印件上修改了文章的不同段落。现在要把两份修改合并成一份最终版。如果你们改的是不同段落,直接合并;如果改了同一段,就需要坐下来商量保留哪个版本。

当你在分支上完成修改后,需要把修改合并(merge)回主分支。大多数情况下 Git 可以自动完成合并。但如果两个人修改了同一个文件的同一处内容,就会产生「冲突」(conflict),需要人工选择保留哪个版本。

常用命令
# 先切换到主分支
git checkout main

# 把你的分支合并进来
git merge feature/update-intent

# 如果有冲突,Git 会提示你手动解决

日常协作中,我们通常不直接 merge,而是通过 Merge Request(MR)来合并——这样其他人可以先审阅你的修改。在 GitHub 上这叫 Pull Request(PR),概念完全一样。

合并请求 Merge Request / Pull Request

MR / PR

你写好了一份修改建议书,提交给团队审阅。大家可以在上面评论、提问、建议修改。所有人都满意后,审批通过,你的修改正式合入主线。

Merge Request(简称 MR)是 GitLab 上的协作机制,GitHub 上叫 Pull Request(PR),本质完全相同。当你在分支上完成修改后,不是直接合并,而是创建一个 MR,邀请团队成员审阅。MR 页面会清晰展示你改了什么,团队可以逐行评论。这是我们 PRD → PR 模式的核心——所有变更都通过 MR 来讨论和确认。

常用命令
# 把你的分支推送到远程仓库
git push origin feature/update-intent

# 然后在 GitLab 网页上点击「New merge request」创建 MR
# GitLab 会在你 push 后自动提示创建 MR 的链接

创建 MR 后,在 GitLab 的 Merge Request 页面上可以看到所有修改的对比视图(Changes 标签页),团队成员可以直接在代码行上评论。

03 — 基础命令速查

12 个命令走天下

不需要背诵——收藏这个页面,用到的时候查一下就好。 日常工作中最常用的其实只有 5 个:pull、add、commit、push、checkout。

git status

查看当前有哪些文件被修改

检查一下你改了哪些东西

示例
git status
git add <文件名>

把文件加入暂存区,准备提交

把要存档的文件放进「待提交」篮子

示例
git add INTENT.md
git add .  # 添加所有修改的文件
git commit -m "说明"

提交修改,创建一个存档点

正式存档,并写一句备注

示例
git commit -m "完善了竞品分析章节"
git push

把本地的提交推送到远程仓库

把你的存档上传到云端,让团队看到

示例
git push origin feature/update-intent

小贴士:不用记命令也能用 Git

下面介绍的可视化工具(如 GitHub Desktop、VS Code)把这些命令都变成了按钮和菜单。 了解命令的含义有助于理解 Git 的工作原理,但日常操作完全可以用图形界面完成。

04 — 协作核心概念

团队协作中的关键术语

除了前面的五个基础概念,以下术语在团队协作中也会经常遇到。 不需要全部记住,遇到时回来查阅即可。

Fork(复刻)

把别人的仓库完整复制一份到你自己的账号下。通常用于开源项目贡献,在公司内部协作中较少使用。

场景:你想基于一个开源模板创建自己的项目,就 Fork 一份到自己的账号下。GitLab 和 GitHub 都支持 Fork 操作。

Pull(拉取)

从远程仓库下载最新的修改到本地。每天开始工作前,先 pull 一下确保你的本地版本是最新的。

场景:早上打开电脑,先 git pull 获取昨晚同事提交的更新。

Push(推送)

把你本地的提交上传到远程仓库。Push 之后,团队其他人就能看到你的修改了。

场景:你修改完 INTENT.md 并 commit 后,git push 把修改同步到 GitLab 远程仓库。

Conflict(冲突)

当两个人修改了同一个文件的同一处内容,Git 无法自动判断保留哪个版本,就会产生冲突。需要人工打开文件,选择保留哪个版本(或合并两者),然后重新提交。

场景:你和同事都修改了 INTENT.md 的第三段,合并时 Git 提示冲突,你需要打开文件手动选择最终版本。

Rebase(变基)

把你的分支「嫁接」到主分支的最新位置。效果类似 merge,但会让提交历史更加线性整洁。初学者可以先只用 merge,等熟练后再了解 rebase。

场景:你的分支基于昨天的 main 创建,但 main 今天有了新提交。Rebase 可以让你的分支看起来像是基于最新的 main 创建的。

Stash(暂存)

临时保存当前未提交的修改,让工作区恢复干净。当你正在改东西但需要临时切换分支处理其他事情时特别有用。

场景:你正在修改需求文档,突然需要切到另一个分支看设计稿。先 stash 保存当前修改,切换完再 stash pop 恢复。

Tag(标签)

给某个特定的提交打上一个标记,通常用于标记版本发布。比如 v1.0、v2.0。标签不会变化,永远指向那个特定的提交。

场景:项目交付给客户时,打一个 v1.0 的 tag,方便以后随时回到这个交付版本。

.gitignore(忽略规则)

一个特殊文件,告诉 Git 哪些文件不需要被追踪。比如临时文件、个人配置、大型设计源文件等。

场景:Sketch 源文件太大不适合放在 Git 里,在 .gitignore 中添加 *.sketch 让 Git 忽略它们。

05 — 可视化工具推荐

告别命令行,用图形界面操作 Git

以下工具把 Git 命令变成了可视化的按钮和菜单, 让你无需记忆任何命令就能完成日常 Git 操作。

推荐

GitHub Desktop

Windows + macOS

GitHub 官方出品的桌面客户端,界面简洁直观,最适合 Git 初学者。所有操作都有清晰的中文引导。

  • 一键 clone、commit、push、pull
  • 可视化查看文件修改对比
  • 分支管理和切换只需点击
  • 冲突解决有图形化引导
  • 与 GitHub 深度集成,直接创建 PR
前往下载
推荐

VS Code / Cursor

Windows + macOS

代码编辑器内置的 Git 面板。如果你已经在用 Cursor 编辑文件,Git 操作就在左侧边栏,无需切换工具。

  • 侧边栏直接显示修改状态
  • 内置终端可运行 Git 命令
  • 逐行查看文件修改差异
  • 支持 Git Graph 等可视化插件
  • AI 辅助理解代码变更
前往下载

Sourcetree

Windows + macOS

Atlassian 出品的免费 Git 客户端,功能比 GitHub Desktop 更丰富,适合需要更多高级操作的用户。

  • 完整的分支可视化图谱
  • 支持 Git Flow 工作流
  • 交互式 rebase 操作
  • 内置终端和搜索功能
  • 同时管理多个仓库
前往下载

GitKraken

Windows + macOS

界面精美的跨平台 Git 客户端,分支图谱非常直观。免费版支持公开仓库,团队版支持私有仓库。

  • 最美观的分支可视化图谱
  • 拖拽操作合并分支
  • 内置代码编辑器
  • 集成 GitHub/GitLab issue
  • 团队协作功能(付费)
前往下载

Fork

Windows + macOS

轻量快速的 Git 客户端,启动速度快,操作流畅。Mac 版尤其出色,是很多开发者的首选。

  • 启动速度极快
  • 清晰的提交历史图谱
  • 强大的文件差异对比
  • 交互式 rebase
  • 内置合并冲突解决工具
前往下载
推荐

GitLab 网页端

Windows + macOS

我们团队使用的主力平台。直接在浏览器中编辑文件、创建 MR、审阅代码,无需安装任何软件。内置 CI/CD 流水线。

  • 零安装,打开浏览器即可使用
  • 在线编辑文件并直接提交
  • 创建和审阅 Merge Request
  • 内置 CI/CD 自动构建和部署
  • Web IDE 在线编辑器(点击 . 或 Web IDE 按钮)
前往下载
工具平台上手难度功能丰富度价格最适合
GitHub DesktopWin + Mac极低基础免费Git 初学者,日常简单操作
VS Code / CursorWin + Mac + Linux中等免费已在使用编辑器的同学
SourcetreeWin + Mac丰富免费需要高级 Git 操作
GitKrakenWin + Mac + Linux丰富免费/付费重视界面美观和团队协作
ForkWin + Mac丰富付费追求性能和效率
GitLab 网页端浏览器极低丰富免费创建 MR、审阅代码、CI/CD

我们的推荐方案

产品经理、商务:从 GitHub Desktop 或 VS Code 开始,界面简洁,学习成本低。日常只需要 clone → 编辑文件 → commit → push → 在 GitLab 上创建 MR 五步操作。

设计师:推荐 VS Code / Cursor,因为你可能需要同时编辑 Design Token 文件和查看代码效果。

临时修改:直接在 GitLab 网页端编辑,点击 Web IDE 按钮还能打开完整的在线编辑器。

06 — GitLab 界面指南

我们的主力平台:GitLab

团队内部使用 GitLab 进行代码托管和协作。以下是你最常用到的四个界面。

GitLab 项目首页

登录 GitLab 后,进入项目页面,你会看到以下核心区域:

左侧导航栏

包含项目信息、代码仓库(Repository)、问题跟踪(Issues)、合并请求(Merge Requests)、CI/CD 等入口

代码文件浏览器

中间区域展示项目的文件结构,可以直接点击查看任何文件内容,包括 INTENT.md、CLAUDE.md 等

分支切换器

页面左上角的下拉菜单,可以切换查看不同分支的代码,比如从 main 切到 develop 或某个 feature 分支

提交历史

点击 Commits 可以查看所有提交记录,每条记录显示谁在什么时候改了什么

README 预览

页面底部会自动渲染项目的 README.md 文件,这是项目的「说明书」

07 — 你的日常 Git 流程

按角色查看每日工作流

不同角色在 Git 上的日常操作略有不同,但核心流程是一致的: 拉取 → 分支 → 编辑 → 提交 → PR。

日常 Git 工作流程图
1

拉取最新

打开 VS Code / GitHub Desktop,拉取远程最新修改,确保本地是最新版本

git pull / GitHub Desktop
2

创建分支

创建新分支,命名如 feature/update-user-stories

git checkout -b / GitHub Desktop
3

编辑文件

用你习惯的编辑器(VS Code / Cursor)打开并修改文件

任意文本编辑器
4

提交修改

在 VS Code 源代码管理面板或 GitHub Desktop 中,填写修改说明并 Commit

git commit / GitHub Desktop
5

推送到远程

点击 Push,把你的修改上传到 GitLab 远程仓库

git push / GitHub Desktop
6

创建 MR

打开 GitLab 网页,点击「Create merge request」,填写描述后提交

GitLab 网页端
7

等待审阅

团队成员会在 MR 上评论。如果需要修改,回到第 3 步继续编辑,再次 commit 和 push 即可,MR 会自动更新

GitLab 网页端

08 — Git Flow 实战

分支策略与搬家平台小程序实战

Git Flow 是一套成熟的分支管理策略,定义了不同类型分支的职责和合并规则。 下面我们先看模型,再用一个完整的搬家平台项目来展示各角色如何基于 Git Flow 协作。

main

生产分支

永远保持可发布状态。每次合并到 main 都意味着一次正式发布。只有 release 和 hotfix 分支可以合并到 main。

禁止直接提交只接受 release/hotfix 合并每次合并打 Tag
develop

开发主线

所有功能开发的集成分支。所有 feature 分支都从这里创建,完成后合并回来。始终包含最新的开发进度。

所有 feature 从这里分出feature 完成后合并回来始终可运行
feature/*

功能分支

每个新功能或任务一个分支。从 develop 创建,完成后通过 MR 合并回 develop。命名规范:feature/功能名。

从 develop 创建合并回 develop命名:feature/xxx
release/*

发布分支

当 develop 上的功能达到发布标准时,创建 release 分支进行最后的测试和修复。完成后同时合并到 main 和 develop。

从 develop 创建合并到 main + develop命名:release/v1.0
hotfix/*

紧急修复

生产环境发现紧急 Bug 时,从 main 创建 hotfix 分支快速修复。修复后同时合并到 main 和 develop。

从 main 创建合并到 main + develop命名:hotfix/xxx

分支流转规则

新功能开发

developfeature/*开发完成 MRdevelop

版本发布

developrelease/*测试修复main+ develop

紧急修复

mainhotfix/*修复验证main+ develop

命名规范

feature/order-system

feature/driver-module

design/update-color-tokens

docs/update-intent-personas

release/v1.0

hotfix/payment-callback

09 — 常见问题

你可能会问的问题