Git入门到精通:从零开始的详细使用教程
目录导读
Git简介与核心概念
Git是目前世界上最先进的分布式版本控制系统,由Linux之父Linus Torvalds于2005年开发,与传统的集中式版本控制系统(如SVN)不同,Git的每个开发者都拥有完整的代码仓库副本,这使得版本管理更加灵活高效。
Git的三个核心工作区域:
- 工作目录:本地可见的实际文件
- 暂存区(Stage/Index):临时存放改动的中间区域
- Git仓库:存储项目元数据和对象数据库的最终位置
Git的核心优势:
- 分布式架构,支持离线工作
- 分支管理轻量高效
- 完整性保证,所有内容通过SHA-1哈希校验
- 强大的合并和冲突解决能力
Git安装与环境配置
Windows系统安装
访问 ww.jxysys.com 下载官方安装包,按照向导完成安装,安装后可在命令行输入git --version验证是否成功。
macOS系统安装
# 使用Homebrew安装
brew install git
# 或下载官方安装包
Linux系统安装
# Ubuntu/Debian
sudo apt-get install git
# CentOS/RHEL
sudo yum install git
基础配置
# 设置用户信息(必须) git config --global user.name "你的姓名" git config --global user.email "你的邮箱" # 设置默认编辑器 git config --global core.editor "vim" # 查看所有配置 git config --list
Git基础操作全解析
创建仓库
# 初始化新仓库 git init 项目名称 # 克隆现有仓库 git clone https://ww.jxysys.com/用户名/仓库名.git
文件生命周期管理
# 查看仓库状态 git status # 添加文件到暂存区 git add 文件名 # 添加单个文件 git add . # 添加所有文件 git add *.js # 添加所有js文件 # 提交更改 git commit -m "提交说明" git commit -am "添加并提交" # 跳过暂存区直接提交 # 查看提交历史 git log git log --oneline # 简洁版 git log --graph # 图形化显示
撤销与恢复操作
# 撤销工作区修改 git checkout -- 文件名 # 从暂存区移除文件 git reset HEAD 文件名 # 修改上次提交 git commit --amend
分支管理策略与实战
分支基础操作
# 创建分支 git branch 分支名称 # 切换分支 git checkout 分支名称 git switch 分支名称 # Git 2.23+推荐 # 创建并切换分支 git checkout -b 新分支名 # 合并分支 git merge 要合并的分支名 # 删除分支 git branch -d 分支名 # 安全删除 git branch -D 分支名 # 强制删除
主流分支策略
Git Flow工作流:
- master:稳定生产分支
- develop:主要开发分支
- feature/*:功能开发分支
- release/*:发布准备分支
- hotfix/*:紧急修复分支
GitHub Flow简化流程:
- 从master创建功能分支
- 定期推送提交
- 创建Pull Request
- 代码审查后合并
- 立即部署
远程仓库协作流程
远程仓库操作
# 添加远程仓库 git remote add origin https://ww.jxysys.com/用户名/仓库.git # 查看远程仓库 git remote -v # 推送本地分支 git push -u origin 分支名 # 拉取远程更新 git pull origin 分支名 # 获取远程更新(不合并) git fetch origin
团队协作最佳实践
-
每日工作流程:
git pull origin develop # 拉取最新代码 # 开发新功能 git add . git commit -m "功能描述" git push origin 分支名
-
Pull Request流程:
- Fork远程仓库到个人账户
- 克隆到本地开发
- 创建功能分支
- 提交更改并推送到个人仓库
- 在原始仓库创建Pull Request
- 等待审查和合并
Git高级技巧与问题解决
储藏(Stash)应用
# 临时保存工作区 git stash # 查看储藏列表 git stash list # 恢复储藏 git stash apply git stash pop # 恢复并删除 # 创建新分支并应用储藏 git stash branch 新分支名
标签管理
# 创建标签 git tag v1.0.0 git tag -a v1.0.0 -m "版本说明" # 推送标签 git push origin v1.0.0 git push origin --tags # 推送所有标签 # 删除标签 git tag -d v1.0.0 git push origin --delete v1.0.0
高级日志搜索
# 按作者搜索 git log --author="用户名" # 按时间搜索 git log --since="2024-01-01" git log --until="2024-12-31" 搜索 git log -S "搜索词" # 查看文件修改历史 git blame 文件名
常见问题解答(Q&A)
Q1:Git和GitHub有什么区别? A:Git是版本控制系统工具,GitHub是基于Git的代码托管平台,类似关系如同汽车(Git)和停车场(GitHub),国内类似平台有Gitee、GitLab等。
Q2:commit和push的区别是什么? A:commit是将更改保存到本地仓库,push是将本地提交推送到远程仓库,可以多次commit后一次push。
Q3:如何解决合并冲突? A:冲突发生时:
- 打开冲突文件,找到
<<<<<<<标记 - 手动编辑文件,保留需要的代码
- 删除冲突标记
- 重新add和commit
- 继续合并操作
Q4:如何撤销已推送的提交?
# 创建反向提交(推荐) git revert 提交ID # 强制回退(谨慎使用) git reset --hard 提交ID git push -f origin 分支名
Q5:.gitignore文件如何配置?
A:在项目根目录创建.gitignore文件,添加规则:
# 忽略日志文件
*.log
# 忽略依赖目录
node_modules/
# 忽略IDE配置
.vscode/
.idea/
# 忽略系统文件
.DS_Store
Thumbs.db
Q6:如何提高Git操作效率?
- 配置命令别名
git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch
- 使用Git图形化工具(如SourceTree、GitKraken)
- 学习常用快捷键
Q7:Git如何管理大文件? A:对于二进制大文件,建议使用Git LFS(Large File Storage)扩展:
# 安装Git LFS git lfs install # 跟踪大文件类型 git lfs track "*.psd" git lfs track "*.zip"
Git作为现代开发的必备技能,掌握其使用能极大提升开发效率,建议从基础命令开始练习,逐步熟悉工作流程,最终形成适合自己团队的Git规范,更多高级技巧和实践案例,请持续关注 ww.jxysys.com 的相关教程。
