## 1. 为什么需要命令行操作Git? 刚接触Git时,很多人会依赖图形化工具(如GitHub Desktop、SourceTree等)。但当你需要处理复杂工作流时,命令行才是终极武器。上周我团队的新人在合并分支时遇到冲突,图形界面只显示"Merge Conflict",而命令行却精确指出了冲突文件位置和差异内容。 命令行操作的优势在于: - 精确控制每个操作步骤(比如`git add -p`可以交互式选择代码块) - 批量处理自动化(用脚本完成重复操作) - 查看完整历史记录(图形工具常会简化日志) - 服务器环境必备(生产环境通常只有命令行) ## 2. Git环境配置与基础操作 ### 2.1 首次配置要点 安装Git后第一件事是配置身份信息: ```bash git config --global user.name "你的名字" git config --global user.email "公司邮箱"建议额外配置:
# 让命令行输出带颜色 git config --global color.ui auto # 设置默认编辑器为VSCode git config --global core.editor "code --wait"注意:公司项目建议使用
--local作用域配置,避免全局配置泄露个人信息
2.2 仓库初始化与基础命令
新建仓库的两种方式:
# 从零创建 mkdir project && cd project git init # 克隆现有仓库 git clone https://github.com/user/repo.git日常三件套命令:
git add . # 暂存所有修改 git commit -m "描述" # 提交到本地仓库 git push origin main # 推送到远程3. 分支管理实战技巧
3.1 分支操作黄金法则
我团队的血泪教训:永远不要在main分支直接开发!标准流程应该是:
git checkout -b feature/login # 创建并切换分支 # 开发完成后... git push -u origin feature/login # 首次推送需建立追踪查看分支关系的利器:
git log --graph --oneline --all3.2 合并与变基的抉择
合并分支的三种方式:
普通合并(保留完整历史)
git checkout main git merge feature/login变基(整理线性历史)
git checkout feature/login git rebase main压缩合并(适合PR合并)
git merge --squash feature/login
重要:变基会改写历史,已推送的分支不要变基!
4. 代码回退与拯救误操作
4.1 撤销操作的三种境界
工作区修改还没add:
git checkout -- filename已add但未commit:
git reset HEAD filename已commit需要回退:
git reset --soft HEAD~1 # 保留修改 git reset --hard HEAD~1 # 彻底删除
4.2 找回误删的提交
当你手滑执行了git reset --hard后别慌:
git reflog # 找到误删的commit哈希 git checkout abc1234 # 切换到该提交 git checkout -b rescue-branch # 立即创建分支保护现场5. 高级应用场景
5.1 交互式暂存
当修改了多个文件但想分多次提交时:
git add -p # 进入交互模式 # 按s分割代码块,y/n选择是否暂存5.2 子模块管理
添加子模块的正确姿势:
git submodule add https://github.com/lib/library.git git submodule update --init --recursive # 克隆后初始化5.3 二分法排查BUG
快速定位引入BUG的提交:
git bisect start git bisect bad # 当前版本有问题 git bisect good v1.0 # 这个版本正常 # 之后Git会自动带你穿越到中间版本 git bisect reset # 结束调试6. 团队协作规范
6.1 Commit Message规范
我们团队采用的Angular规范示例:
feat(login): add password strength meter - Add zxcvbn library for password check - Show visual feedback under input field Fixes #123类型说明:
- feat:新功能
- fix:bug修复
- docs:文档变更
- style:代码格式
- refactor:重构代码
6.2 Git Flow工作流
经典分支模型操作:
git flow init # 需要先安装git-flow git flow feature start login git flow feature finish login git flow release start 1.2.07. 常见问题排坑指南
7.1 认证失败问题
HTTPS协议报错时:
# 缓存凭据(15分钟) git config --global credential.helper cache # 长期存储(安全性较低) git config --global credential.helper store更安全的SSH配置:
ssh-keygen -t ed25519 # 生成密钥 cat ~/.ssh/id_ed25519.pub # 复制到GitHub7.2 大文件处理
误传大文件后的清理:
- 安装BFG工具:
brew install bfg - 清理历史记录:
bfg --delete-files *.psd git reflog expire --expire=now --all git gc --prune=now --aggressive
建议使用Git LFS管理大文件:
git lfs install git lfs track "*.psd" git add .gitattributes8. 效率提升技巧
8.1 别名配置
我的.gitconfig精选别名:
[alias] co = checkout br = branch ci = commit st = status lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit undo = reset HEAD~1 --mixed8.2 终端增强
搭配zsh的git插件后,提示符会显示:
- 当前分支名
- 是否有未提交修改
- 与远程的同步状态
安装方法:
# Oh My Zsh用户 plugins=(git)