Git 是现代软件开发中不可或缺的工具,除了基本的 commit、push、pull 操作外,Git 还有很多高级用法能够大大提高开发效率。
## 分支管理策略
### Git Flow 模型
```
master 主分支,用于生产环境
develop 开发分支,用于集成新功能
feature/* 功能分支
release/* 发布分支
hotfix/* 热修复分支
```
### 分支操作
```bash
# 创建并切换到新分支
git checkout -b feature/new-feature
# 合并分支
git merge feature/new-feature
# 删除分支
git branch -d feature/new-feature
# 强制删除分支
git branch -D feature/new-feature
```
## 高级合并技巧
### 1. 变基(Rebase)
```bash
# 将当前分支变基到目标分支
git rebase master
# 交互式变基
git rebase -i HEAD~3
```
### 2. 挑选提交(Cherry-pick)
```bash
# 将指定提交应用到当前分支
git cherry-pick commit-hash
```
### 3. 暂存工作区
```bash
# 暂存当前工作
git stash
# 查看暂存列表
git stash list
# 恢复暂存的工作
git stash pop
# 应用指定暂存
git stash apply stash@{0}
```
## 历史操作
### 1. 修改最后一次提交
```bash
# 修改提交信息
git commit --amend
# 添加新文件到最后一次提交
git add .
git commit --amend --no-edit
```
### 2. 回滚操作
```bash
# 回滚到指定提交(保留工作区修改)
git reset commit-hash
# 硬回滚(丢弃工作区修改)
git reset --hard commit-hash
# 回滚到指定提交(创建新提交)
git revert commit-hash
```
### 3. 查找问题提交
```bash
# 二分查找问题提交
git bisect start
git bisect bad
git bisect good commit-hash
git bisect bad
git bisect reset
```
## 远程仓库操作
### 1. 远程分支管理
```bash
# 查看远程分支
git branch -r
# 获取远程分支信息
git fetch origin
# 拉取远程分支到本地
git checkout -b local-branch origin/remote-branch
# 删除远程分支
git push origin --delete remote-branch
```
### 2. 强制推送
```bash
# 强制推送(谨慎使用)
git push --force-with-lease origin branch-name
```
## 配置优化
### 1. 别名设置
```bash
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
```
### 2. 忽略文件配置
```bash
# 全局忽略文件
git config --global core.excludesfile ~/.gitignore_global
# 忽略文件权限变化
git config core.filemode false
```
## 实用工具
### 1. 查看提交历史
```bash
# 图形化显示提交历史
git log --graph --oneline --all
# 查看指定文件的修改历史
git log -p filename
# 查看统计信息
git log --stat
```
### 2. 差异比较
```bash
# 比较分支差异
git diff master..feature-branch
# 比较指定提交
git diff commit1 commit2
# 查看工作区和暂存区的差异
git diff
```
## 最佳实践
1. **频繁提交**:小而频繁的提交更容易追踪和回滚
2. **清晰的提交信息**:使用规范的提交信息格式
3. **定期同步**:及时获取远程仓库的最新更新
4. **分支命名规范**:使用有意义的分支名称
5. **代码审查**:在合并前进行代码审查
掌握这些高级用法,你将能够更加高效地使用 Git 进行版本控制。记住,Git 是一个强大的工具,需要不断练习才能熟练掌握。