1. 没有版本控制的问题:为什么直接拷贝文件是个坏主意
我们从一个现实场景开始。想象你在做一个 C# 项目。一切都很顺利,直到到了“实验”阶段。你想改点东西,但又怕把能跑的版本搞坏。怎么办?当然是拷贝项目!
结果你磁盘上会出现这样的杰作:
MyProject/
├── Main.cs
├── Main_backup.cs
├── Main_final.cs
├── Main_final2.cs
├── Main_exact_final.cs
├── Main_exact_exact_final.cs
熟悉吗?现在再想象有个同学也加入项目。他也喜欢拷贝文件——但用他自己的方式。怎么判断哪个是最新且能跑的版本?怎么知道谁改了什么?如果实验失败,怎么回退?
没有版本控制时:
- 很容易丢失或搞混工作代码。
- 无法“回滚”到旧的版本。
- 多人协作变得很难。
- 一片混乱,大家害怕做实验。
这些问题正是版本控制系统要解决的——比如 Git。
2. 开发者为什么需要 Git?
Git — 是一个强大的版本控制系统,用来在软件开发过程中跟踪源代码的变更。它允许开发者保存文件的不同版本,并且协调多人对同一项目的工作。
Git 的基本概念:
仓库
仓库(或“repo”)是保存项目全部历史的地方,包括所有文件的更改和各个版本。
提交(Commits)
commit — 是项目的一个保存状态。每个提交包含哪些改动、谁改的、什么时候改的这些信息。提交形成项目历史,可以回到任何之前的版本。
gitGraph
commit id: "1"
commit id: "2"
commit id: "3"
commit id: "4"
commit id: "5"
commit id: "6"
每个提交是项目的“快照”,按时间顺序形成连续的变更历史。
分支
branch — 是一条独立的开发线。默认情况下 Git 会创建分支 main。你可以新建分支来开发新功能或修复 bug,完成后再合并回主分支。
gitGraph
commit id: "1"
commit id: "2"
branch develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout main
commit id: "6"
commit id: "7"
merge develop
commit id: "8"
commit id: "9"
从主分支 main 分出 develop 做并行开发,完成后把 develop 的改动合并回 main。
3. Git 的主要命令(底层发生的事)
下面是通过终端使用 Git 的主要命令清单。理解这些命令可以让你知道背后都发生了什么。但在课程中我们会主要采用GUI 方式,在 IntelliJ IDEA 的图形界面里完成这些操作。把这些命令当作“引擎盖下”的实现。
| 命令 | 描述 |
|---|---|
git init |
在当前目录初始化一个新的 Git 仓库。 |
git clone |
从 URL 克隆一个仓库到新目录。 |
git add |
把文件加入暂存区,为下一次提交做准备。 |
git commit |
把已暂存的改动提交到仓库。 |
git push |
把本地仓库的改动推送到远程。 |
git pull |
把远程仓库的最新改动拉取到当前分支并合并。 |
git branch |
显示、创建或删除分支。 |
git merge |
把指定分支的改动合并到当前分支。 |
这些命令是使用 Git 管理代码、分支和合并的基本工具,适用于任何规模的项目。
sequenceDiagram
participant 工作目录
participant 暂存区_Staging
participant 本地仓库
participant 远程仓库
工作目录 ->> 暂存区_Staging: git add
暂存区_Staging ->> 本地仓库: git commit
本地仓库 ->> 远程仓库: git push
远程仓库 ->> 工作目录: git pull
4. 代码存放的三处位置
使用版本控制系统管理代码时,大致会把代码存放在三处:
1. 远程仓库
这是保存你代码的中心位置,通常托管在像 GitHub、GitLab 或 Bitbucket 这样的服务上。它们提供集中存储,并支持自动化集成,比如构建、测试和部署。
2. 本地仓库
本地仓库是你电脑上的代码副本。在本地你可以离线完成所有 Git 操作(提交、分支、合并)。
3. 工作目录
工作目录是你当前正在编辑的项目文件所在的位置。你在这里查看和修改文件,添加功能或修 bug。
这三部分一起构成了管理源代码的强大基础,让开发者能管理项目历史并协作。
5. GitHub — 你的作品集
GitHub — 领先的代码托管平台,基于 Git 的版本控制。自 2008 年成立以来,它迅速成为全球开发者的重要工具。
GitHub 让用户创建仓库来管理项目,跟踪代码变更并与他人协作。对现代开发者来说,在 GitHub 上有个人资料是重要的作品集,可以展示给潜在雇主看。
6. 在 GitHub 上创建你的第一个仓库
步骤 1. 访问 https://github.com 并注册账号。
步骤 2. 点击 New repository 按钮创建新仓库。
步骤 3. 为仓库设置参数:
- 仓库名: 想一个有意义的名字。
- Public 或 Private: 对于学习项目建议选 "Public",方便别人查看。
- Add a README file: 勾选这个选项。README 是项目的“门面”。
- Add .gitignore: 点击下拉并选择适合语言的模板。
- Choose a license: 可以跳过。
- 点击
Create repository。
步骤 4. 恭喜,你的第一个远程仓库创建成功!
7. Git 的安装与配置
虽然可以通过命令行学习 Git(如视频所示),但实际工作中 99% 的开发者更喜欢 IDE 里集成的图形工具。我们的目标是教你像专业人士那样工作。
JetBrains 系列的 IDE(比如用于 Java/Kotlin 的 IntelliJ IDEA、用于 C# 的 Rider 或用于 Python 的 PyCharm)里的 Git 界面几乎一致。学会在一个 IDE 里用 Git,其他 IDE 也能通用。因此我们用 IntelliJ IDEA 举例,所见即所得。
要在电脑上使用 Git,先得安装它。如果你用了 IntelliJ IDEA,当系统未检测到 Git 时,IDE 通常会提示你自动安装。建议接受这个提示——这是最快的方式。
关闭当前项目:选择 File > Close Project,然后点击 Clone Repository。
如果你想手动安装,去官网下载:https://git-scm.com/downloads。
8. 一点历史:main vs master
以前 Git 的默认分支叫 master。但在 2020 年,开发者社区和主要平台(包括 GitHub)转向了更中性的名字 — main。
这点很重要,因为在一些旧文章或项目里你可能还会看到 master。在我们的课程和现代项目里,主分支默认都用 main。
想了解更多关于切换到 main 的信息,可以看:
GO TO FULL VERSION