1. Git 基础命令速查手册
作为一个分布式版本控制系统,Git 已经成为现代软件开发不可或缺的工具。无论是个人项目还是团队协作,掌握 Git 的基本命令都能极大提升工作效率。以下是我在多年开发实践中总结的最常用 Git 命令分类整理。
1.1 仓库初始化与克隆
创建新仓库是使用 Git 的第一步。在项目目录下执行:
git init这个命令会在当前目录创建隐藏的 .git 文件夹,包含所有版本控制所需的数据结构。
克隆现有仓库则使用:
git clone <repository-url>克隆操作会自动配置远程跟踪分支,默认情况下会将远程仓库的所有分支历史下载到本地。
提示:使用
git clone --depth=1可以只克隆最近一次提交,适合大型仓库的快速克隆,但会丢失完整历史记录。
1.2 基础工作流命令
日常开发中最常用的命令组合是:
git status # 查看当前变更状态 git add . # 添加所有修改到暂存区 git commit -m "提交信息" # 创建提交 git push # 推送更改到远程git status会显示三种状态的文件:
- Untracked: 新文件,尚未被 Git 管理
- Changes not staged: 已修改但未暂存
- Changes to be committed: 已暂存待提交
2. 分支管理实战技巧
2.1 分支基础操作
创建并切换到新分支:
git checkout -b feature/new-feature # 等同于 git branch feature/new-feature git checkout feature/new-feature查看所有分支:
git branch -a # 查看本地和远程分支删除分支:
git branch -d branch-name # 安全删除(已合并) git branch -D branch-name # 强制删除(未合并)2.2 分支合并策略
合并分支有三种主要方式:
- 普通合并 (merge):
git checkout main git merge feature/new-feature- 变基 (rebase):
git checkout feature/new-feature git rebase main- 拣选提交 (cherry-pick):
git cherry-pick commit-hash经验之谈:在团队协作中,公共分支(如main)应该使用merge保留完整历史,个人特性分支可以使用rebase保持线性历史。
3. 版本回退与撤销操作
3.1 查看提交历史
git log --oneline --graph --all # 简洁可视化历史 git log -p filename # 查看特定文件变更历史3.2 撤销更改
撤销工作区修改:
git checkout -- filename撤销暂存区修改(取消add):
git reset HEAD filename撤销最近一次提交:
git reset --soft HEAD~1 # 保留更改在暂存区 git reset --hard HEAD~1 # 彻底丢弃更改3.3 恢复已删除内容
通过 reflog 找回丢失的提交:
git reflog # 查看所有操作记录 git checkout -b recovered-branch commit-hash4. 远程仓库协作
4.1 远程仓库配置
查看远程仓库:
git remote -v添加远程仓库:
git remote add upstream <repository-url>更新远程分支信息:
git fetch upstream4.2 解决冲突
当多人修改同一文件时可能出现冲突。解决步骤:
- 拉取最新代码:
git pull origin main- 编辑冲突文件(搜索"<<<<<<<"标记)
- 标记冲突已解决:
git add conflicted-file git commit4.3 标签管理
创建标签:
git tag -a v1.0 -m "版本1.0发布"推送标签到远程:
git push origin --tags5. 高级技巧与实用场景
5.1 储藏临时修改
git stash # 储藏当前修改 git stash list # 查看储藏列表 git stash apply # 恢复最近储藏 git stash drop # 删除储藏5.2 子模块管理
添加子模块:
git submodule add <repository-url> path/to/submodule初始化子模块:
git submodule update --init --recursive5.3 重写历史
交互式变基:
git rebase -i HEAD~3 # 修改最近3次提交修改最后一次提交:
git commit --amend5.4 配置文件
查看配置:
git config --list设置全局用户名:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"6. 常见问题解决方案
6.1 认证问题
使用SSH密钥认证:
ssh-keygen -t ed25519 -C "your_email@example.com" eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed255196.2 大文件处理
使用Git LFS管理大文件:
git lfs install git lfs track "*.psd" git add .gitattributes6.3 忽略文件配置
.gitignore文件示例:
# 忽略所有.log文件 *.log # 但跟踪important.log !important.log # 忽略目录 build/6.4 性能优化
清理仓库:
git gc --aggressive git repack -ad7. 工作流最佳实践
7.1 Git Flow模型
经典分支模型:
- main: 稳定发布分支
- develop: 开发集成分支
- feature/*: 特性开发分支
- release/*: 预发布分支
- hotfix/*: 紧急修复分支
7.2 提交信息规范
推荐使用约定式提交:
<类型>[可选 范围]: <描述> [可选 正文] [可选 脚注]常见类型:
- feat: 新功能
- fix: bug修复
- docs: 文档变更
- style: 代码格式
- refactor: 重构代码
- test: 测试相关
- chore: 构建过程或辅助工具变更
7.3 代码审查流程
- 创建特性分支
- 开发并提交代码
- 推送分支到远程
- 创建Pull Request
- 团队评审讨论
- 解决评审意见
- 合并到主分支
8. 图形化工具与扩展
8.1 常用GUI工具
- GitKraken
- Sourcetree
- GitHub Desktop
- GitExtensions
8.2 IDE集成
主流IDE都提供Git集成:
- VS Code: 内置Git支持
- IntelliJ IDEA: 强大的版本控制工具窗口
- Eclipse: EGit插件
8.3 命令行增强工具
- tig: 文本界面Git浏览器
- lazygit: 终端UI工具
- git-extras: 扩展命令集
掌握这些Git命令和技巧后,你会发现版本控制工作变得更加高效和可控。在实际项目中,建议团队制定统一的Git使用规范,避免因操作习惯不同导致的混乱。Git的学习曲线虽然有些陡峭,但一旦掌握,它将成为你开发过程中最得力的助手。