Git 版本控制完全指南:从入门到精通
什么是 Git?
Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,用于管理 Linux 内核开发。它能够跟踪文件的变化,记录修改历史,并支持多人协作开发。
安装 Git
Windows
- 访问 git-scm.com
- 下载并运行安装程序
- 按照默认设置完成安装
macOS
1
2
3
4
| # 使用 Homebrew
brew install git
# 或从官网下载安装包
|
Linux (Ubuntu/Debian)
1
2
| sudo apt update
sudo apt install git
|
初始配置
安装完成后,首先需要配置用户信息:
1
2
3
| git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
git config --global core.editor "code --wait" # 使用VSCode作为默认编辑器
|
查看配置信息:
Git 基本工作流程
Git 有三个主要区域:
- 工作目录 - 实际文件所在目录
- 暂存区 - 准备提交的文件
- 版本库 - 存储提交历史
基础命令
初始化仓库
1
2
3
4
5
| # 创建新仓库
git init 项目名称
# 克隆现有仓库
git clone https://github.com/用户名/仓库名.git
|
查看状态
1
2
| git status # 查看当前状态
git status -s # 简洁状态显示
|
添加文件到暂存区
1
2
3
| git add 文件名 # 添加特定文件
git add . # 添加所有文件
git add *.js # 添加所有js文件
|
提交更改
1
2
| git commit -m "提交说明"
git commit -am "提交说明" # 添加并提交所有已跟踪文件
|
查看历史
1
2
3
| git log # 查看完整历史
git log --oneline # 简洁历史
git log --graph # 图形化显示分支
|
分支管理
创建和切换分支
1
2
3
4
| git branch # 查看所有分支
git branch 分支名 # 创建新分支
git checkout 分支名 # 切换到分支
git checkout -b 分支名 # 创建并切换到新分支
|
合并分支
1
2
| git checkout main # 切换到主分支
git merge 分支名 # 将分支合并到当前分支
|
删除分支
1
2
| git branch -d 分支名 # 删除已合并的分支
git branch -D 分支名 # 强制删除分支
|
远程仓库操作
连接远程仓库
1
2
| git remote add origin https://github.com/用户名/仓库名.git
git push -u origin main # 首次推送并设置上游分支
|
推送和拉取
1
2
3
| git push # 推送更改到远程仓库
git pull # 从远程仓库拉取更新
git fetch # 获取远程更新但不合并
|
查看远程信息
1
2
| git remote -v # 查看远程仓库地址
git remote show origin # 查看远程仓库详细信息
|
撤销操作
撤销工作区修改
1
| git checkout -- 文件名 # 撤销对文件的修改
|
撤销暂存区文件
1
| git reset HEAD 文件名 # 将文件从暂存区移回工作区
|
修改上次提交
1
| git commit --amend # 修改上次提交信息或内容
|
回退到特定提交
1
2
| git reset --hard commit_id # 彻底回退到指定版本
git reset --soft commit_id # 回退但保留更改到暂存区
|
高级功能
储藏更改
1
2
3
4
| git stash # 储藏当前工作
git stash list # 查看储藏列表
git stash apply # 应用最近的储藏
git stash pop # 应用并删除储藏
|
标签管理
1
2
3
4
| git tag # 查看所有标签
git tag v1.0.0 # 创建轻量标签
git tag -a v1.0.0 -m "版本说明" # 创建附注标签
git push origin --tags # 推送所有标签到远程
|
子模块
1
2
| git submodule add https://github.com/用户名/仓库名.git
git submodule update --init --recursive
|
.gitignore 文件
创建 .gitignore
文件来指定不需要版本控制的文件:
1
2
3
4
5
6
7
8
9
10
11
| # 忽略所有.log文件
*.log
# 忽略node_modules目录
node_modules/
# 忽略.env环境文件
.env
# 但不要忽略重要的log文件
!important.log
|
最佳实践
- 提交频率:频繁提交,每个提交只解决一个问题
- 提交信息:编写清晰、具体的提交信息
- 分支策略:使用功能分支开发,主分支保持稳定
- 代码审查:使用 Pull Request 进行代码审查
- 定期同步:经常从主分支拉取更新,避免大规模冲突
常见问题解决
解决合并冲突
- 打开冲突文件,找到冲突标记(«««<, =======, »»»>)
- 手动解决冲突,删除冲突标记
- 添加解决后的文件:
git add 文件名
- 完成合并:
git commit
找回删除的分支
1
2
| git reflog # 查看操作历史
git checkout -b 分支名 commit_id # 根据commit_id恢复分支
|
结语
Git 是一个功能强大的工具,需要时间和实践来掌握。建议从简单的项目开始练习,逐步尝试更复杂的工作流程。记住,Git 的主要目的是帮助团队协作和管理项目历史,而不是增加工作复杂度。
通过本教程,你应该已经掌握了 Git 的基本用法。继续实践和探索,你会发现 Git 更多的强大功能!