写给想入门但不想踩坑的人
一、先搞清楚这几个概念
入门之前,先把这三个东西分清楚。它们经常被混在一起说,但其实各管各的。
| 名称 | 是什么 | 类比 | 一句话总结 |
|---|---|---|---|
| Git | 本地版本控制系统,管理代码的每一次修改历史 | 你电脑上的 Word(本地编辑、撤销、保存) | 记录"谁在什么时候改了什么" |
| AtomGit / GitHub | 云端代码托管平台,存代码、协作、开源 | 腾讯文档(云端同步、多人协作) | 把本地代码同步到云端 |
| Docker | 容器引擎,让代码在任何机器上都能跑起来 | 真空包装(不管在哪打开,味道一样) | 解决"在我电脑上能跑"的问题 |
💡 关系梳理
Git 管代码版本,AtomGit / GitHub 管代码存放和协作,Docker 管代码运行环境。
三者互相独立,但组合使用威力最大。
二、Git:从安装到第一个提交
2.1 安装
Windows
- 访问 git-scm.com 下载安装包。
- 一路默认下一步。
- 安装完成后打开
Git Bash终端。
macOS
git --version
# 如果没装,系统会自动提示你安装 Xcode Command Line Tools
2.2 验证安装
git --version
# 显示版本号即成功,例如:git version 2.43.0
2.3 配置身份
每个提交都会带上你的名字和邮箱,这个必须先配好:
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
2.4 第一个仓库
跟着敲一遍,每条命令都有注释:
# 1. 创建并进入文件夹
mkdir my-project
cd my-project
# 2. 初始化 Git 仓库
git init
# 3. 创建 .gitignore(防止垃圾文件被提交)
echo "node_modules/" > .gitignore
echo ".env" >> .gitignore
echo ".DS_Store" >> .gitignore
echo "*.log" >> .gitignore
# 4. 创建文件
echo "Hello Git" > README.md
# 5. 查看状态
git status
# 会显示 README.md 和 .gitignore 是未跟踪文件
# 6. 添加到暂存区
git add .
# 7. 提交(永久保存)
git commit -m "first commit: add README and .gitignore"
💡 关于
.gitignore这个文件告诉 Git:"哪些文件不要管"。
避免把依赖包、密钥文件、系统文件提交进仓库。
常见需要忽略的有:
node_modules/、.env、.DS_Store、__pycache__/、*.log。
2.5 Git 核心命令速查
| 操作 | 命令 |
|---|---|
| 初始化仓库 | git init |
| 查看状态 | git status |
| 添加到暂存区 | git add <文件> 或 git add . |
| 提交 | git commit -m "提交信息" |
| 查看历史 | git log |
| 查看差异 | git diff |
| 重命名默认分支 | git branch -M main |
三、AtomGit:从本地到云端
3.1 连接方式选择
AtomGit 支持两种连接方式,先搞清楚区别:
| 方式 | 地址格式 | 是否需要密钥 | 适合场景 |
|---|---|---|---|
| SSH | git@gitcode.com:用户名/仓库.git |
需要配 SSH 密钥 | 长期开发,免密码(推荐) |
| HTTPS | https://gitcode.com/用户名/仓库.git |
每次输密码(或配 Token) | 临时克隆公开仓库 |
3.2 SSH 密钥配置(推荐)
# 1. 生成密钥(之后一路回车即可)
ssh-keygen -t ed25519 -C "你的邮箱"
# 2. 查看并复制公钥(复制输出的全部内容)
cat ~/.ssh/id_ed25519.pub
# 3. 粘贴到 AtomGit
# 路径:「个人设置」 ->「安全设置」->「SSH 公钥」,点击「+ SSH 公钥」
# 4. 验证连接
ssh -T git@gitcode.com
# 看到 "Welcome to GitCode, [用户名]" 就成功了
3.3 推送代码到 AtomGit
# 1. 在 AtomGit 网页创建新仓库(假设叫 my-project)
# ⚠️ 不要勾选初始化 README
# 2. 确保本地分支名是 main
git branch -M main
# 3. 关联远程仓库(SSH 方式)
git remote add origin git@gitcode.com:你的用户名/my-project.git
# 4. 首次推送代码
git push -u origin main
# 之后再推送只需要输入:
git push
3.4 克隆别人的项目
# 公开仓库直接用 HTTPS 即可,不需要 SSH
git clone https://gitcode.com/用户名/仓库名.git
# 自己的私有仓库用 SSH
git clone git@gitcode.com:你的用户名/仓库名.git
四、Docker:从安装到第一个容器
4.1 安装
Windows
访问 Docker Desktop 下载,安装过程会自动配置 WSL2。
macOS
同样下载 Docker Desktop,拖入"应用程序"文件夹即可。
4.2 验证安装
docker --version
# 显示版本号即成功,例如:Docker version 24.0.7
4.3 核心概念
| 概念 | 英文 | 类比 | 说明 |
|---|---|---|---|
| 镜像 | Image | 菜谱 | 不可变的模板,包含运行环境和代码 |
| 容器 | Container | 做好的菜 | 镜像的运行实例,可以启动、停止、删除 |
| 仓库 | Registry | 菜市场 | Docker Hub,存放公开镜像,谁都能拉取 |
4.4 第一个容器
# 1. 拉取官方 Nginx 镜像
docker pull nginx:latest
# 2. 运行容器
docker run -d --name my-web -p 8080:80 nginx:latest
# 参数解析:
# -d 后台运行
# --name 给容器起名字
# -p 8080:80 本机 8080 端口映射到容器内部 80 端口
# 3. 打开浏览器访问 http://localhost:8080
# 你会看到 Nginx 的欢迎页
# 4. 用完了停掉容器
docker stop my-web
4.5 Docker 核心命令速查
镜像操作
docker images # 查看本地镜像
docker pull <镜像名>:<标签> # 拉取镜像
docker rmi <镜像名> # 删除镜像
docker search nginx # 搜索镜像
容器操作
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
docker stop <容器名> # 停止容器
docker start <容器名> # 启动容器
docker rm <容器名> # 删除容器
docker logs <容器名> # 查看日志
docker exec -it <容器名> /bin/bash
# 进入容器内部终端
清理(新手必知)
docker system prune
# 清理停止的容器、悬空镜像、未使用网络
⚠️ 注意
定期运行
docker system prune清理无用资源。不清理的话,几个月下来磁盘可能会被旧镜像和停止的容器吃掉几十 GB。
4.6 构建自己的镜像(实战)
下面以一个 Node.js 项目为例。
第一步:创建项目
mkdir my-app && cd my-app
第二步:创建 Dockerfile
这是一个没有后缀的独立文件。
# 基础镜像:轻量版 Node.js
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 先复制依赖文件(利用 Docker 缓存加速构建)
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制项目代码
COPY . .
# 声明端口
EXPOSE 3000
# 启动命令
CMD ["npm", "start"]
第三步:构建并运行
# 构建镜像(注意最后有个点 ".",表示当前目录)
docker build -t my-node-app .
# 运行容器
docker run -d -p 3000:3000 --name my-app my-node-app
# 此时即可访问 http://localhost:3000
五、避坑指南
🛑 Git 避坑
| 坑 | 解决方案 |
|---|---|
提交信息写成 "xxx" 或 "update" |
必须写清楚改了什么,未来的你会感谢现在的你 |
忘记 add 就直接 commit |
commit 只提交暂存区内容;必须先 git add 再 git commit |
push 到错误的仓库 |
先检查 git remote -v,确认远程地址 |
| 删除未合并的分支报错 | 用 git branch -D <分支名> 强制删除 |
push 时报错 src refspec main does not match |
先运行 git branch -M main 将分支重命名为 main 再推送 |
把 node_modules 提交进去了 |
务必提前创建 .gitignore 文件,并加入 node_modules/ |
🛑 Docker 避坑
| 坑 | 解决方案 |
|---|---|
| 端口被占用 | 换一个映射端口,例如 -p 9090:80 |
| 容器名字重复 | 先 docker rm <旧容器>,再重新创建运行 |
| 镜像构建失败 | 看终端最后几行报错;通常是 COPY 路径写错,或依赖下载失败、网络超时 |
| Windows 权限问题报错 | 以管理员身份运行终端(PowerShell / CMD) |
| C 盘磁盘空间被吃满 | 定期运行 docker system prune 清理垃圾 |
六、学习路线建议
第一阶段:会用(你现在的位置)
- Git:提交 / 推送 / 克隆
- Docker:运行现成容器
第二阶段:理解原理
- Git:分支 / 合并 / 冲突解决
- Docker:Dockerfile / 容器网络 / 数据卷(Volumes)
第三阶段:进阶
- Git:Rebase / Submodule / Git Worktrees
- Docker:Docker Compose / 多阶段构建 / 镜像体积优化
💡 核心建议
每个阶段都先动手做一个小项目,不要只看不练。
看十遍教程,不如自己真实踩一次坑。
七、实战项目推荐
| 项目方向 | 难度 | 核心收获 |
|---|---|---|
| 把本地笔记用 Git 管理 | ⭐ | 理解版本控制的价值与基础命令 |
| 部署一个静态博客到 AtomGit | ⭐ | 熟悉 AtomGit 线上操作与静态托管 |
| 用 Docker 跑一个 Redis 数据库 | ⭐⭐ | 理解容器化免安装环境的好处 |
| 用 Docker 部署自己的小工具 | ⭐⭐ | 掌握 Dockerfile 编写与打包流程 |
| Git + Docker 联合:提交代码自动构建镜像 | ⭐⭐⭐ | 理解现代后端 CI/CD 雏形 |
🎯 总结陈词
- Git 核心链路 :
init→add→commit→push - Docker 核心链路 :
pull→run→exec→logs
❗ 最重要的一句话
不要只看教程,一定要动手敲命令 。
第一次踩坑很正常,第二次你就开始变熟练了。
📚 官方参考资料
- Git 官方文档:https://git-scm.com/doc
- AtomGit 官方文档:https://docs.atomgit.com/docs/start/
- Docker 官方文档:https://docs.docker.com/get-started/