在当今的软件开发领域,Git已经成为版本控制的事实标准。根据2023年Stack Overflow开发者调查,超过93%的专业开发者使用Git进行版本控制。无论是个人项目还是团队协作,Git都能提供强大的代码管理能力。本文将带您从Git基础概念开始,逐步深入到高级用法,帮助您全面掌握这一必备技能。
Git是一个开源的分布式版本控制系统,由Linux之父Linus Torvalds于2005年开发,最初是为了更好地管理Linux内核开发而创建的。与传统的集中式版本控制系统(如SVN)不同,Git的每个开发者电脑都是一个完整的代码仓库,可以独立完成大部分版本控制操作。
Git的工作流程分为四个关键区域:
graph LR
A[工作区] -->|git add| B[暂存区]
B -->|git commit| C[本地仓库]
C -->|git push| D[远程仓库]
D -->|git pull| A
Windows用户:
Linux用户:
bashsudo apt update && sudo apt upgrade sudo apt install -y git
Mac用户:
bashbrew install git
安装完成后,首先需要配置用户信息:
bashgit config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
其他实用配置:
bash# 设置默认编辑器为VSCode
git config --global core.editor "code --wait"
# 设置命令别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
# 查看当前配置
git config --global --list
初始化新仓库:
bashmkdir my-project
cd my-project
git init
克隆现有仓库:
bash# SSH方式(推荐)
git clone git@github.com:user/repo.git
# HTTPS方式
git clone https://github.com/user/repo.git
# 克隆到指定目录
git clone https://github.com/user/repo.git my-folder
bashgit status
bashgit add filename.txt # 添加单个文件
git add *.js # 添加所有js文件
git add . # 添加所有修改和新文件
bashgit commit -m "修复登录页面样式问题"
# 良好的提交信息格式示例:
git commit -m "fix: 修复登录按钮点击无效的问题
- 修改了按钮的点击事件处理函数
- 添加了点击效果反馈
- 解决了#123问题"
创建和切换分支:
bashgit branch # 查看分支
git branch new-feature # 创建新分支
git checkout new-feature # 切换分支
# 或者使用组合命令
git checkout -b hotfix # 创建并切换到新分支
合并分支:
bashgit checkout main git merge new-feature
删除分支:
bashgit branch -d new-feature # 删除本地分支
git push origin --delete old-branch # 删除远程分支
查看远程仓库:
bashgit remote -v
添加远程仓库:
bashgit remote add upstream https://github.com/original/repo.git
推送更改:
bashgit push origin main # 推送到main分支
git push -u origin new-branch # 首次推送新分支并建立追踪
获取更新:
bashgit pull # 拉取并合并(相当于fetch + merge)
git fetch # 仅获取不合并
查看历史:
bashgit log --oneline --graph --all # 简洁图形化显示
git log -p filename # 查看文件的详细修改历史
撤销工作区修改:
bashgit checkout -- filename # 放弃单个文件的修改
git restore . # 放弃所有修改(Git 2.23+)
撤销暂存区文件:
bashgit reset HEAD filename # 将文件移出暂存区
修改最后一次提交:
bashgit commit --amend # 修改提交信息
git commit --amend --no-edit # 只修改提交内容
当需要临时切换分支但不想提交当前修改时:
bashgit stash # 储藏当前修改
git stash list # 查看储藏列表
git stash apply stash@{1} # 应用特定储藏
git stash pop # 应用并删除最新储藏
git stash drop stash@{0} # 删除特定储藏
当合并或拉取代码时遇到冲突:
<<<<<<< HEAD 本地修改内容 ======= 远程修改内容 >>>>>>> branch-name
bashgit add filename
bashgit commit
推荐使用Conventional Commits规范:
feat
: 新功能fix
: bug修复docs
: 文档更新style
: 代码格式/样式调整refactor
: 代码重构perf
: 性能优化test
: 测试相关chore
: 构建/工具变更示例:
feat: 添加用户注册功能 - 实现手机号验证注册 - 添加短信验证码服务 - 完善用户信息收集 相关issue: #123
Git Flow工作流:
main
: 生产环境代码develop
: 开发主分支feature/
: 功能开发分支release/
: 发布准备分支hotfix/
: 紧急修复分支GitHub Flow简化版:
main
: 可直接部署的稳定分支示例配置:
# 忽略所有日志文件 *.log # 忽略IDE特定文件 .idea/ .vscode/ *.swp # 忽略依赖目录 node_modules/ vendor/ # 忽略系统文件 .DS_Store Thumbs.db # 忽略编译输出 build/ dist/ *.exe
git submodule
管理公共组件rebase
保持与主分支同步git blame
追踪代码变更责任人Git是一个功能强大而复杂的工具,本文涵盖了日常开发中最常用的功能和最佳实践。要真正掌握Git,建议:
记住,Git的学习是一个渐进的过程。即使是最有经验的开发者,也会不断发现Git的新功能和技巧。保持学习和实践,Git将成为您软件开发过程中最得力的助手之一。
延伸阅读资源: