Git 实战场景
1. 修改历史提交
场景一:修改最近一次提交信息
# 修改最后一次提交的信息
git commit --amend -m "新的提交信息"
# 如果已推送到远程,需要强制推送
git push --force origin main
场景二:修改历史提交信息
# 修改某个历史提交的信息
git rebase -i <commit-hash>~1
# 在编辑器中将 'pick' 改为 'reword' 或 'r'
# 保存后在新的编辑器中修改提交信息
# 强制推送
git push --force origin main
- 回退代码
- 修改提交信息,然后保存退出
- 强制推送到远端
场景三:合并多个提交
# 合并最近的 3 个提交
git rebase -i HEAD~3
# 在编辑器中保留第一个 'pick',将后面的 'pick' 改为 'squash' 或 's'
# 保存后在新的编辑器中编辑合并后的提交信息
2. 版本回退
场景一:回退到指定版本
# 创建备份分支
git checkout -b backup-branch
# 返回主分支
git checkout main
# 硬回退到指定提交
git reset --hard <commit-hash>
# 强制推送
git push --force origin main
场景二:撤销错误的回退
# 从备份分支恢复
git checkout backup-branch
git branch -D main
git checkout -b main
git push --force origin main
3. 分支管理
场景一:功能分支开发
# 创建并切换到功能分支
git checkout -b feature/new-feature
# 开发完成后合并到主分支
git checkout main
git merge feature/new-feature
# 删除功能分支
git branch -d feature/new-feature
场景二:解决合并冲突
# 当合并出现冲突时
git status # 查看冲突文件
git diff # 查看具体冲突
# 手动解决冲突后
git add .
git commit -m "解决合并冲突"
4. 紧急修复
场景一:热修复
# 从主分支创建热修复分支
git checkout -b hotfix/bug-fix main
# 修复完成后合并回主分支
git checkout main
git merge hotfix/bug-fix
git tag -a v1.0.1 -m "紧急修复版本"
# 同步到开发分支
git checkout develop
git merge hotfix/bug-fix
5. 代码暂存
场景一:临时切换分支
# 暂存当前修改
git stash save "正在开发的功能"
# 切换分支处理其他事情
git checkout other-branch
# 返回后恢复修改
git checkout original-branch
git stash pop
场景二:多个暂存
# 查看暂存列表
git stash list
# 应用指定的暂存
git stash apply stash@{2}
# 删除指定的暂存
git stash drop stash@{2}