Git 基础入门
Git 是目前最流行的分布式版本控制系统,用于记录代码的每一次修改、多人协作和版本回溯。 本教程面向零基础,从安装、配置讲到提交、分支与远程仓库。
1. 认识 Git
1.1 什么是版本控制
版本控制可以记录文件的每次改动,让你能够:
- 随时回退到任意历史版本
- 查看某行代码是谁、什么时候改的
- 多人并行开发不同功能再合并
1.2 Git 与 GitHub 的区别
| Git | GitHub / GitLab / Gitee | |
|---|---|---|
| 是什么 | 本地版本控制工具 | 托管 Git 仓库的在线平台 |
| 运行位置 | 你的电脑 | 云端服务器 |
| 是否必需 | 必需 | 可选(用于协作/备份) |
一句话:Git 是工具,GitHub 是网站。
1.3 Git 的三个区域
工作区 (Working Directory) → 暂存区 (Staging) → 本地仓库 (Repository) → 远程仓库 (Remote)
你正在编辑的文件 git add git commit git push
- 工作区:你实际编辑文件的地方
- 暂存区:准备提交的改动(
git add后进入) - 本地仓库:已提交的历史记录(
git commit后进入)
2. 安装与配置
2.1 安装
- Windows:到 git-scm.com/download/win 下载安装,安装后自带
Git Bash - macOS:
brew install git或安装 Xcode 命令行工具 - Linux:
sudo apt install git(Debian/Ubuntu)
验证:
git --version
2.2 首次配置(必做)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
查看配置:
git config --list
其他常用配置:
git config --global core.editor "code --wait" # 使用 VS Code 作为编辑器
git config --global init.defaultBranch main # 默认分支名 main
git config --global core.autocrlf true # Windows 换行符处理
3. 创建仓库
3.1 初始化新仓库
mkdir my-project
cd my-project
git init
执行后目录里会出现隐藏的 .git 文件夹,它保存所有版本信息。
3.2 克隆已有仓库
git clone https://github.com/用户名/仓库名.git
git clone https://github.com/用户名/仓库名.git my-folder # 指定目录名
4. 基本工作流
4.1 查看状态
git status # 查看当前状态(最常用)
git status -s # 简洁模式
4.2 提交改动三步走
# 1. 查看改了哪些文件
git status
# 2. 把改动加入暂存区
git add 文件名 # 添加指定文件
git add . # 添加当前目录所有改动
# 3. 提交到本地仓库
git commit -m "提交说明"
4.3 查看历史
git log # 完整历史
git log --oneline # 每条一行
git log --oneline --graph --all # 图形化查看所有分支
4.4 查看与比较差异
git diff # 工作区 vs 暂存区
git diff --staged # 暂存区 vs 最后一次提交
git show 提交ID # 查看某次提交的内容
5. 撤销与回退
撤销是 Git 最容易出错的地方,先看清文件处于哪个区域再操作。
5.1 撤销工作区改动(还没 add)
git restore 文件名 # 丢弃工作区改动(新版命令)
git checkout -- 文件名 # 旧版等价命令
5.2 取消暂存(已经 add,还没 commit)
git restore --staged 文件名
git reset HEAD 文件名 # 旧版等价命令
5.3 修改最后一次提交
git commit --amend -m "新的提交说明" # 只改说明
git add 忘记的文件; git commit --amend --no-edit # 把漏掉的文件补进上次提交
--amend会重写历史,只对尚未推送的提交使用。
5.4 回退提交
git reset --soft HEAD~1 # 撤销提交,改动保留在暂存区
git reset --mixed HEAD~1 # 撤销提交,改动保留在工作区(默认)
git reset --hard HEAD~1 # 撤销提交并丢弃改动(危险!)
6. 分支
分支让你在不影响主线的情况下开发新功能。
6.1 基本操作
git branch # 查看本地分支
git branch -a # 查看所有分支(含远程)
git branch dev # 创建分支
git switch dev # 切换分支(新版)
git checkout dev # 切换分支(旧版)
git switch -c feature # 创建并切换
git branch -d dev # 删除已合并的分支
git branch -D dev # 强制删除
6.2 合并分支
git switch main # 先切回目标分支
git merge feature # 把 feature 合并进 main
6.3 解决冲突
当两个分支改了同一处内容,合并时会提示冲突。冲突文件中会出现标记:
<<<<<<< HEAD
当前分支的内容
=======
被合并分支的内容
>>>>>>> feature
解决步骤:
- 手动编辑文件,保留想要的内容,删除
<<<<<<<、=======、>>>>>>>标记 git add 冲突文件git commit(Git 会自动生成合并提交)
放弃本次合并:
git merge --abort
7. 远程仓库
7.1 关联远程仓库
git remote add origin https://github.com/用户名/仓库名.git
git remote -v # 查看已关联的远程
7.2 推送与拉取
git push -u origin main # 首次推送并关联分支(-u 之后可省略)
git push # 之后直接推送
git pull # 拉取远程更新并合并(= fetch + merge)
git fetch # 只下载,不合并
7.3 常用远程操作
git remote remove origin # 删除远程关联
git remote set-url origin 新地址 # 修改远程地址
8. 忽略文件(.gitignore)
在项目根目录创建 .gitignore,列出不纳入版本控制的文件:
# 依赖目录
node_modules/
venv/
# 构建产物
dist/
build/
*.pyc
# 编辑器/系统文件
.vscode/
.idea/
.DS_Store
# 敏感信息
.env
*.key
已被跟踪的文件再加入
.gitignore无效,需先git rm --cached 文件名。
9. 常见场景速查
| 场景 | 命令 |
|---|---|
| 查看状态 | git status |
| 添加所有改动 | git add . |
| 提交 | git commit -m "说明" |
| 查看历史 | git log --oneline |
| 创建并切换分支 | git switch -c 分支名 |
| 合并分支 | git merge 分支名 |
| 拉取远程 | git pull |
| 推送到远程 | git push |
| 克隆仓库 | git clone 地址 |
| 丢弃工作区改动 | git restore 文件名 |
10. 写好提交说明
推荐使用祈使句,一句话说清这次改了什么:
好例子:
修复登录页密码校验错误
新增用户导出 CSV 功能
更新 README 安装说明
不好的例子:
修改
update
一些改动
11. 完整示例:从零到推送
# 1. 配置(只需一次)
git config --global user.name "张三"
git config --global user.email "zhangsan@example.com"
# 2. 初始化仓库
mkdir demo && cd demo
git init
# 3. 创建文件并提交
echo "# Demo" > README.md
git add .
git commit -m "初始化项目"
# 4. 关联远程并推送
git remote add origin https://github.com/用户名/demo.git
git branch -M main
git push -u origin main
12. 学习建议
- 多用
git status,它会告诉你当前该做什么。 - 提交要小而频繁,每次提交只做一件事。
- 动手练习分支和冲突解决,这是 Git 的核心价值。
- 出错别慌,先
git status和git log看清状态。
继续阅读 Git 进阶,学习 rebase、stash、标签、撤销与协作流程。