以下是几个常见的 Git 使用场景及对应的解决方法,结合实际案例说明:
场景 1:合并分支时发生冲突
问题描述:
在合并 feature/login 分支到 main 分支时,Git 提示文件冲突:
Auto-merging src/login.js
CONFLICT (content): Merge conflict in src/login.js
解决方法:
- 手动打开冲突文件
src/login.js,找到冲突标记(<<<<<<<、=======、>>>>>>>)。 - 根据需求选择保留的代码(或合并双方修改),删除冲突标记。
- 标记冲突已解决:
git add src/login.js git commit -m "resolve merge conflict in login.js"
场景 2:误提交敏感文件
问题描述:
不小心将包含密码的 config.yaml 文件提交到了仓库:
git commit -m "update config"
解决方法:
- 从提交历史中彻底删除文件:
# 删除历史中的 config.yaml(交互式 rebase) git rebase -i HEAD~2 # 找到误提交的 commit # 在 rebase 过程中删除相关 commit 或修改文件 git push --force # 强制推送(谨慎使用!) - 更新 .gitignore:
在.gitignore中添加config.yaml,避免再次提交。
场景 3:撤销未推送的提交
问题描述:
在本地提交了错误的代码,但尚未推送到远程仓库:
git log --oneline
# 输出:a1b2c3d (HEAD -> main) fix: typo in header
解决方法:
- 撤销提交但保留修改(回退到工作区):
git reset --soft HEAD~1 - 彻底丢弃提交和修改(回退到上一个版本):
git reset --hard HEAD~1
场景 4:紧急修复线上 Bug,但当前开发未完成
问题描述:
正在开发新功能(分支 feature/cart),突然需要修复线上紧急 Bug。
解决方法:
- 暂存当前修改:
git stash # 保存工作区修改 - 切换到主分支并创建修复分支:
git checkout main git checkout -b hotfix/payment-error - 修复并提交:
git commit -m "fix: payment gateway timeout" git push origin hotfix/payment-error - 回到原分支继续开发:
git checkout feature/cart git stash pop # 恢复暂存修改
场景 5:误删本地分支
问题描述:
误删除了本地未合并的分支 feature/search,但该分支曾提交到远程仓库。
解决方法:
- 从远程仓库拉取分支:
git fetch origin feature/search git checkout -b feature/search origin/feature/search - 若未推送过远程,但本地有提交记录:
通过git reflog查找删除前的 commit hash,重建分支:git reflog # 找到误删前的 commit(如 a1b2c3d) git checkout -b feature/search a1b2c3d
场景 6:修改历史提交信息
问题描述:
需要修改最近一次提交的注释信息:
git log --oneline
# 输出:d4e5f6g (HEAD -> main) fix: typoo in title
解决方法:
git commit --amend -m "fix: typo in title"
git push --force # 强制推送(仅限未协作的分支)
场景 7:代码回滚到指定版本
问题描述:
最新代码引入严重 Bug,需回滚到稳定版本(commit hash 为 a1b2c3d)。
解决方法:
- 保留回滚记录(推荐协作场景):
git revert a1b2c3d # 生成一个撤销 commit git push - 彻底删除后续提交(仅限本地或私有分支):
git reset --hard a1b2c3d git push --force
总结:Git 核心命令速查
| 场景 | 关键命令 | 注意事项 |
|---|---|---|
| 合并冲突 | git add + git commit | 解决后必须标记文件为已解决 |
| 撤销未推送提交 | git reset --soft/hard | --hard 会丢失工作区修改 |
| 暂存工作区 | git stash | 结合 pop 或 apply 恢复 |
| 恢复误删分支 | git reflog + git checkout | 依赖本地 reflog 记录 |
| 修改提交历史 | git commit --amend / git rebase | 强制推送前确保分支未被协作 |
| 代码回滚 | git revert / git reset | revert 安全,reset 彻底 |
注意事项:
- 强制推送(
--force)可能覆盖他人代码,协作分支慎用! - 涉及历史修改的操作(如
rebase)应在私有分支进行。
3万+

被折叠的 条评论
为什么被折叠?



