Git作为目前最流行的分布式版本控制系统,已经成为开发者必备的技能之一。本文将全面介绍Git的核心概念、基本操作、分支管理以及与GitHub的协作开发,帮助读者从零开始掌握Git的使用。
一、Git概述
1.1 Git发展历史
Git诞生于2005年,由Linux之父Linus Torvalds开发。当时Linux内核开发社区与BitKeeper(当时使用的版本控制系统)的合作关系终止,促使Linus开发了Git这一全新的版本控制系统。Git的设计目标包括:
极快的速度
简单的设计
强大的非线性分支支持(支持上千个并行开发分支)
完全分布式架构
高效处理大型项目(如Linux内核)
1.2 Git与SVN对比
特性 | Git(分布式) | SVN(集中式) |
---|---|---|
架构 | 每个开发者都有完整仓库副本 | 只有一个中央仓库 |
网络依赖 | 大部分操作不需要网络 | 几乎所有操作都需要网络 |
分支处理 | 轻量级分支,创建/切换快速 | 分支是目录拷贝,操作较慢 |
提交速度 | 本地提交,极快 | 必须连接服务器,较慢 |
历史查看 | 本地即可查看完整历史 | 需要连接服务器查看历史 |
适用场景 | 适合分布式团队协作 | 适合集中管理的团队 |
二、Git安装与配置
2.1 Windows系统安装
下载Git:访问Git官网下载Windows版本
安装Git:
运行安装程序
基本保持默认选项,一路"Next"
安装完成后可在右键菜单看到Git选项
安装TortoiseGit(图形界面工具):
下载TortoiseGit并安装
安装过程中配置Git路径(通常是
C:\Program Files\Git\bin\git.exe
)设置用户名和邮箱(用于标识提交者)
安装中文语言包(可选):
下载对应版本的中文语言包
安装后在TortoiseGit设置中选择中文界面
2.2 基本配置
配置全局用户名和邮箱:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
查看配置信息:
git config --list
三、Git基础操作
3.1 创建仓库
命令行方式:
mkdir myproject
cd myproject
git init
图形界面方式:
在文件夹中右键选择"Git在这里创建版本库"
确认后会在目录下生成
.git
隐藏文件夹
3.2 工作区与暂存区
工作区:实际看到的项目目录
暂存区(stage/index):临时存放修改的地方
版本库:
.git
目录,存储所有版本数据
文件状态变化流程:
工作区 → git add → 暂存区 → git commit → 版本库
3.3 基本操作命令
添加文件到暂存区:
git add filename # 添加单个文件
git add . # 添加所有修改
提交到版本库:
git commit -m "提交说明"
查看状态:
git status
查看修改内容:
git diff # 查看工作区与暂存区差异
git diff --cached # 查看暂存区与版本库差异
查看提交历史:
git log
git log --pretty=oneline # 简洁显示
3.4 撤销修改
丢弃工作区修改:
git checkout -- filename
从暂存区撤回:
git reset HEAD filename
版本回退:
git reset --hard HEAD^ # 回退到上一个版本
git reset --hard commit_id # 回退到指定版本
四、远程仓库
4.1 GitHub使用
创建SSH Key:
ssh-keygen -t rsa -C "your.email@example.com"
生成的公钥(id_rsa.pub
)内容添加到GitHub账户的SSH Keys中
添加远程仓库:
git remote add origin git@github.com:username/repo.git
推送本地分支:
git push -u origin master # 第一次推送
git push origin master # 后续推送
克隆远程仓库:
git clone git@github.com:username/repo.git
4.2 远程操作命令
查看远程仓库:
git remote -v
从远程获取更新:
git fetch origin # 只获取不合并
git pull origin master # 获取并合并
删除远程分支:
git push origin --delete branch_name
五、分支管理
5.1 分支基本操作
创建分支:
git branch dev # 创建分支
git checkout dev # 切换分支
git checkout -b dev # 创建并切换
查看分支:
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
合并分支:
git checkout master # 切换到主分支
git merge dev # 合并dev分支
删除分支:
git branch -d dev # 删除已合并分支
git branch -D dev # 强制删除未合并分支
5.2 解决冲突
当合并分支出现冲突时:
手动编辑冲突文件(Git会用
<<<<<<<
,=======
,>>>>>>>
标记冲突内容)解决冲突后重新添加并提交:
git add filename
git commit -m "解决冲突"
5.3 分支策略
推荐的工作流程:
master分支:仅用于发布稳定版本
dev分支:集成开发分支
feature分支:开发新功能(每个功能一个分支)
六、Git高级技巧
6.1 忽略文件
创建.gitignore
文件,添加需要忽略的文件模式:
# 忽略所有.class文件
*.class
# 忽略target目录
target/
# 忽略特定文件
config.properties
6.2 储藏(Stash)
临时保存工作现场:
git stash # 储藏当前修改
git stash list # 查看储藏列表
git stash apply # 恢复最近一次储藏
git stash drop # 删除储藏
git stash pop # 恢复并删除储藏
6.3 标签管理
创建标签:
git tag v1.0 # 轻量标签
git tag -a v1.0 -m "版本1.0" # 附注标签
查看标签:
git tag
git show v1.0
推送标签:
git push origin v1.0 # 推送单个标签
git push origin --tags # 推送所有标签
七、Git图形工具
7.1 TortoiseGit常用操作
克隆仓库:
右键选择"Git克隆"
填写URL和目标目录
提交修改:
右键选择"Git提交"
选择要提交的文件,填写提交信息
查看历史:
右键选择"显示日志"
分支操作:
右键选择"创建分支"/"切换/检出"
7.2 IDE集成(IntelliJ IDEA)
配置Git路径:
File → Settings → Version Control → Git
导入项目到Git:
VCS → Import into Version Control → Create Git Repository
提交更改:
点击工具栏√图标或Ctrl+K
推送更改:
VCS → Git → Push
更新项目:
VCS → Update Project 或 工具栏↓图标
八、Git最佳实践
提交规范:
提交信息清晰明确,说明做了什么修改
推荐格式:
<类型>: <描述>
,如feat: 添加用户登录功能
分支策略:
主分支保持稳定,开发在新分支进行
功能分支尽量小而专注
频繁提交:
小步提交,每个提交解决一个问题
避免大而全的提交
代码审查:
使用Pull Request进行代码审查
确保代码质量后再合并到主分支
九、常见问题解答
Q1: 如何撤销已经推送的提交?
git revert commit_id # 创建反向提交
git push
Q2: 如何修改最后一次提交?
git commit --amend
Q3: 如何找回删除的分支?
git reflog # 查看操作历史
git checkout -b branch_name commit_id
Q4: 如何解决合并冲突?
手动编辑冲突文件
删除冲突标记(
<<<<<<<
,=======
,>>>>>>>
)保存后添加并提交
十、学习资源推荐
结语
Git作为现代软件开发的核心工具,掌握它将极大提升你的开发效率。本文涵盖了Git的基础知识到高级技巧,建议读者在学习的同时多加实践。记住,Git的学习曲线可能有些陡峭,但一旦掌握,你将体会到它带来的巨大便利。