跳到主要内容

Git 基础入门

Git 是目前最流行的分布式版本控制系统,用于记录代码的每一次修改、多人协作和版本回溯。 本教程面向零基础,从安装、配置讲到提交、分支与远程仓库。


1. 认识 Git

1.1 什么是版本控制

版本控制可以记录文件的每次改动,让你能够:

  • 随时回退到任意历史版本
  • 查看某行代码是谁、什么时候改的
  • 多人并行开发不同功能再合并

1.2 Git 与 GitHub 的区别

GitGitHub / 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
  • macOSbrew install git 或安装 Xcode 命令行工具
  • Linuxsudo 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

解决步骤:

  1. 手动编辑文件,保留想要的内容,删除 <<<<<<<=======>>>>>>> 标记
  2. git add 冲突文件
  3. 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. 学习建议

  1. 多用 git status,它会告诉你当前该做什么。
  2. 提交要小而频繁,每次提交只做一件事。
  3. 动手练习分支和冲突解决,这是 Git 的核心价值。
  4. 出错别慌,先 git statusgit log 看清状态。

继续阅读 Git 进阶,学习 rebase、stash、标签、撤销与协作流程。