Git 基础操作学习指南
什么是 Git?
Git 是一个分布式版本控制系统,用于跟踪文件的变更、协调多人协作开发。它是目前世界上最流行的版本控制系统。
核心概念:
- 版本控制:记录文件的历史变化,随时回溯到任意版本
- 分布式:每个开发者都有完整的代码仓库副本
- 协作:多人可以同时开发,合并各自的工作
一、Git 安装和初始配置
1.1 安装 Git
Windows:
- 访问 https://git-scm.com/downloads
- 下载并安装 Git for Windows
- 安装时会自动安装 Git Bash(推荐使用)
验证安装:
bash
git --version
1.2 初始配置
安装后需要配置用户信息(重要!):
bash
# 配置用户名
git config --global user.name "你的名字"
# 配置邮箱
git config --global user.email "your.email@example.com"
# 查看配置
git config --list
提示: --global 表示全局配置,对所有仓库生效。如果只对当前仓库配置,去掉 --global 即可。
二、Git 基础概念
2.1 工作区、暂存区、本地仓库
工作区 (Working Directory)
↓ [git add]
暂存区 (Staging Area / Index)
↓ [git commit]
本地仓库 (Local Repository)
↓ [git push]
远程仓库 (Remote Repository)
说明:
- 工作区:你实际编辑文件的地方
- 暂存区:准备提交的文件列表
- 本地仓库 :存储版本历史的地方(
.git目录) - 远程仓库:托管在服务器上的仓库(如 GitHub、GitLab)
2.2 Git 状态
bash
# 查看当前状态
git status
常见状态:
Untracked:新文件,未被 Git 跟踪Modified:已跟踪文件被修改Staged:已添加到暂存区,准备提交Unmerged:合并冲突
三、基础操作
3.1 初始化仓库
bash
# 在当前目录创建新仓库
git init
# 查看是否初始化成功(会显示 .git 目录)
dir
3.2 克隆远程仓库
bash
# 克隆远程仓库到本地
git clone <仓库URL>
# 示例
git clone https://github.com/username/repo.git
# 克隆到指定目录
git clone https://github.com/username/repo.git my-project
常见仓库托管平台:
- GitHub: https://github.com
- GitLab: https://gitlab.com
- Gitee(码云): https://gitee.com
四、文件管理
4.1 添加文件到暂存区
bash
# 添加指定文件
git add 文件名.cs
# 添加所有修改的文件
git add .
# 添加所有文件(包括新文件)
git add -A
# 添加交互模式(可以选择性添加)
git add -i
4.2 查看文件差异
bash
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和上次提交的差异
git diff --staged
# 或
git diff --cached
# 查看工作区和上次提交的差异
git diff HEAD
4.3 删除文件
bash
# 删除文件(同时从工作区和暂存区删除)
git rm 文件名.cs
# 删除暂存区的文件,但保留工作区文件
git rm --cached 文件名.cs
4.4 移动/重命名文件
bash
# 重命名文件
git mv 旧文件名.cs 新文件名.cs
五、提交操作
5.1 提交更改
bash
# 提交暂存区的更改
git commit
# 提交并添加提交信息
git commit -m "提交说明"
# 提交所有已跟踪文件的更改(跳过 git add)
git commit -am "提交说明"
提交信息规范(推荐):
<类型>: <简短描述>
<详细描述(可选)>
类型可选:
- feat: 新功能
- fix: 修复 bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 重构
- test: 测试相关
- chore: 构建/工具链相关
示例:
git commit -m "feat: 添加用户登录功能"
git commit -m "fix: 修复轴运动超时问题"
5.2 修改最后一次提交
bash
# 修改提交信息
git commit --amend
# 将新修改加入最后一次提交
git add 新文件.cs
git commit --amend --no-edit
注意: --amend 会修改历史,已推送的提交不要使用。
六、查看历史
6.1 查看提交历史
bash
# 查看提交历史
git log
# 简洁显示
git log --oneline
# 显示图形化分支
git log --graph --oneline
# 显示最近的 N 次提交
git log -3
# 查看指定文件的提交历史
git log 文件名.cs
6.2 查看提交详情
bash
# 查看某次提交的详细信息
git show <提交ID>
# 示例
git show a1b2c3d
6.3 查看操作记录
bash
# 查看所有操作记录(包括已删除的提交)
git reflog
七、远程仓库操作
7.1 添加远程仓库
bash
# 添加远程仓库
git remote add origin <仓库URL>
# 示例
git remote add origin https://github.com/username/repo.git
7.2 查看远程仓库
bash
# 查看远程仓库列表
git remote
# 查看远程仓库详细信息
git remote -v
7.3 推送到远程仓库
bash
# 推送当前分支到远程仓库
git push
# 推送指定分支
git push origin main
# 首次推送并设置上游分支
git push -u origin main
# 强制推送(谨慎使用!)
git push -f
重要提示:
-u或--set-upstream:设置上游分支,之后可以直接用git push-f或--force:强制推送,会覆盖远程历史,非常危险!
7.4 从远程仓库拉取
bash
# 拉取远程更新并合并
git pull
# 拉取但不合并
git fetch
# 拉取指定分支
git pull origin main
pull vs fetch:
git pull=git fetch+git mergegit fetch只获取更新,不合并,更安全
八、分支管理
8.1 分支概念
分支允许你并行开发多个功能,互不干扰。
main(主分支)
↓
├─── feature-A(功能分支)
└─── feature-B(功能分支)
8.2 创建和切换分支
bash
# 查看所有分支
git branch
# 查看所有分支(包括远程分支)
git branch -a
# 创建新分支
git branch feature-login
# 切换到指定分支
git checkout feature-login
# 或(新版 Git)
git switch feature-login
# 创建并切换到新分支
git checkout -b feature-login
# 或
git switch -c feature-login
8.3 分支操作
bash
# 删除已合并的分支
git branch -d feature-login
# 强制删除分支(未合并)
git branch -D feature-login
# 重命名分支
git branch -m 旧分支名 新分支名
# 查看分支的详细提交
git branch -v
8.4 合并分支
bash
# 切换到目标分支(如 main)
git checkout main
# 合并其他分支到当前分支
git merge feature-login
# 删除已合并的分支
git branch -d feature-login
合并类型:
- Fast-forward:快进合并,直接移动指针
- Merge commit:合并提交,创建新的合并节点
8.5 解决合并冲突
当两个分支修改了同一文件的同一行时,会产生冲突。
冲突标记示例:
csharp
public void MoveAxis()
{
<<<<<<< HEAD
velocity = 1000; // main 分支的修改
=======
velocity = 2000; // feature 分支的修改
>>>>>>> feature
}
解决步骤:
- 编辑文件,保留需要的代码,删除冲突标记:
csharp
public void MoveAxis()
{
velocity = 1500; // 人工决定最终值
}
- 添加并提交:
bash
git add 文件名.cs
git commit -m "解决合并冲突"
8.6 变基(Rebase)
变基可以整理提交历史,使其更清晰。
bash
# 将当前分支的提交"移植"到目标分支上
git rebase main
# 交互式变基(可以修改、删除、合并提交)
git rebase -i HEAD~3
注意: 变基会修改历史,已推送的提交不要使用。
九、撤销操作
9.1 撤销工作区修改
bash
# 撤销指定文件的修改(恢复到上次提交状态)
git checkout -- 文件名.cs
# 或(新版 Git)
git restore 文件名.cs
# 撤销所有修改
git checkout -- .
# 或
git restore .
9.2 撤销暂存区修改
bash
# 将文件从暂存区移除
git reset HEAD 文件名.cs
# 或
git restore --staged 文件名.cs
9.3 撤销提交
bash
# 撤销最后一次提交,保留修改在暂存区
git reset --soft HEAD~1
# 撤销最后一次提交,保留修改在工作区
git reset HEAD~1
# 撤销最后一次提交,丢弃修改
git reset --hard HEAD~1
# 撤销到指定提交
git reset --hard <提交ID>
9.4 恢复已删除的提交
bash
# 查看操作记录,找到被删除的提交ID
git reflog
# 恢复指定提交
git reset --hard <提交ID>
十、常见使用场景
10.1 新项目开始
bash
# 1. 在 GitHub 创建仓库
# 2. 克隆到本地
git clone https://github.com/username/repo.git
cd repo
# 3. 创建开发分支
git checkout -b dev
# 4. 开始开发...
git add .
git commit -m "feat: 初始化项目"
# 5. 推送到远程
git push -u origin dev
10.2 开发新功能
bash
# 1. 从主分支创建功能分支
git checkout main
git pull
git checkout -b feature/new-function
# 2. 开发并提交
git add .
git commit -m "feat: 添加新功能"
# 3. 推送到远程
git push -u origin feature/new-function
# 4. 创建 Pull Request(在 GitHub 上)
# 5. 合并到主分支
# 6. 删除功能分支
git checkout main
git pull
git branch -d feature/new-function
10.3 修复 Bug
bash
# 1. 创建修复分支
git checkout -b fix/bug-123
# 2. 修复并提交
git add .
git commit -m "fix: 修复登录失败问题"
# 3. 推送
git push -u origin fix/bug-123
# 4. 合并到主分支和开发分支
10.4 团队协作
bash
# 每天开始工作前
git checkout main
git pull
# 开始开发
git checkout -b feature/my-task
# ... 编码 ...
git add .
git commit -m "feat: 完成任务 A"
git push -u origin feature/my-task
# 合并前先拉取最新代码
git checkout main
git pull
git merge feature/my-task
git push
十一、常用命令速查表
| 命令 | 说明 |
|---|---|
git init |
初始化仓库 |
git clone <url> |
克隆远程仓库 |
git status |
查看状态 |
git add <file> |
添加到暂存区 |
git add . |
添加所有修改 |
git commit -m "msg" |
提交 |
git log |
查看历史 |
git log --oneline |
简洁历史 |
git branch |
查看分支 |
git branch <name> |
创建分支 |
git checkout <branch> |
切换分支 |
git checkout -b <name> |
创建并切换 |
git merge <branch> |
合并分支 |
git push |
推送到远程 |
git pull |
拉取并合并 |
git fetch |
拉取不合并 |
git remote -v |
查看远程仓库 |
git diff |
查看差异 |
git reset |
重置 |
git checkout -- <file> |
撤销修改 |
十二、最佳实践
12.1 提交规范
✅ 好的提交信息:
feat: 添加用户登录功能
- 实现用户名密码验证
- 添加 JWT token 生成
- 完善错误处理
❌ 不好的提交信息:
update
fix bug
done
12.2 分支管理策略
推荐分支模型:
main:主分支,始终保持稳定dev:开发分支,日常开发feature/*:功能分支fix/*:修复分支release/*:发布分支
12.3 工作流建议
- 频繁提交:小步快跑,每次提交一个完整的逻辑单元
- 保持主分支稳定:不要直接在 main 分支开发
- 及时同步 :定期
git pull,避免冲突积累 - 写好提交信息:清晰说明做了什么
- 提交前检查:确保代码能编译、测试通过
12.4 注意事项
⚠️ 不要做的事情:
- 不要提交敏感信息(密码、密钥)
- 不要提交大文件(视频、数据集)
- 不要用
git push -f强制推送(除非你清楚后果) - 不要在提交中包含二进制文件(如 .dll、.exe)
- 不要提交 IDE 临时文件(.vs、.idea)
📝 应该使用 .gitignore:
# .NET
bin/
obj/
*.suo
*.user
# IDE
.vs/
.vscode/
# 敏感信息
*.env
secrets.json
十三、图形化工具
虽然命令行很强大,但图形化工具可以更直观地查看历史和操作。
推荐工具:
- GitKraken:跨平台,功能强大
- Sourcetree:免费,Windows/Mac
- GitHub Desktop:GitHub 官方工具
- TortoiseGit:Windows 资源管理器集成
VS Code 内置 Git:
- VS Code 自带 Git 支持,可以查看状态、提交、切换分支
- 快捷键:
Ctrl + Shift + G打开 Git 面板
十四、常见问题
Q1: 忘记添加文件就提交了怎么办?
bash
# 修改最后一次提交
git add 忘记的文件.cs
git commit --amend
Q2: 提交信息写错了怎么办?
bash
# 修改提交信息
git commit --amend
# 在编辑器中修改信息
Q3: 如何删除错误的提交?
bash
# 撤销最后一次提交(不保留修改)
git reset --hard HEAD~1
# 如果已推送,需要强制推送(危险!)
git push -f
Q4: 如何查看某行代码是谁写的?
bash
# 查看文件每一行的作者信息
git blame 文件名.cs
Q5: 如何忽略已跟踪的文件?
bash
# 1. 添加到 .gitignore
echo "*.log" >> .gitignore
# 2. 从暂存区移除
git rm --cached *.log
# 3. 提交
git commit -m "chore: 添加 .gitignore"
十五、学习资源
官方文档
- Git 官方文档:https://git-scm.com/doc
- Pro Git 中文版:https://git-scm.com/book/zh/v2
在线教程
- Learn Git Branching:https://learngitbranching.js.org/(可视化学习)
- GitHub Skills:https://skills.github.com/
视频教程
- B站搜索 "Git 教程"
- YouTube:Git & GitHub Crash Course
练习平台
- GitHub:注册账号,创建仓库练习
- GitLab:免费私有仓库
总结
Git 是现代软件开发必备的技能,掌握基础操作后,可以在实际项目中逐步深入学习。
核心操作记住这 5 个:
git clone- 克隆仓库git add- 添加到暂存区git commit- 提交git push- 推送到远程git pull- 从远程拉取
分支管理记住这 3 个:
git branch- 查看/创建分支git checkout- 切换分支git merge- 合并分支
最重要的是多练习! 在实际项目中使用 Git,遇到问题就查文档或问 AI,很快就会熟练掌握。
创建日期:2026年2月10日