git abort 中止合并
合并发生冲突时,可以使用 abort 命令中止合并,恢复到合并前的状态。
基本用法
Bash
# 中止 merge
git merge --abort
# 中止 rebase
git rebase --abort
# 中止 cherry-pick
git cherry-pick --abort
中止合并场景
| 场景 | 说明 |
|---|---|
| 冲突太复杂 | 一时无法解决,先中止 |
| 需要更多信息 | 了解对方修改意图后再合并 |
| 操作失误 | 合入了错误的分支 |
| 时间紧迫 | 暂时中止,稍后处理 |
merge --abort 示例
Bash
# 合并发生冲突
$ git merge feature
CONFLICT (content): Merge conflict in src/main.go
Automatic merge failed; fix conflicts and then commit the result.
# 查看状态
$ git status
On branch main
Merging branch 'feature'
You have unmerged paths.
# 中止合并
$ git merge --abort
# 状态恢复
$ git status
On branch main
nothing to commit, working tree clean
rebase --abort 示例
Bash
# rebase 发生冲突
$ git rebase main
CONFLICT (content): conflict in src/utils.go
# 中止 rebase
$ git rebase --abort
# 恢复到 rebase 前的状态
cherry-pick --abort 示例
Bash
# cherry-pick 冲突
$ git cherry-pick abc123
error: could not apply abc123...
# 中止 cherry-pick
$ git cherry-pick --abort
abort 效果对比
| 操作 | abort 后状态 |
|---|---|
| merge --abort | 回到合并前,工作区干净 |
| rebase --abort | 回到 rebase 前,提交不变 |
| cherry-pick --abort | 回到 cherry-pick 前 |
abort vs reset
Bash
# abort:干净地取消操作
git merge --abort
# 工作区恢复到操作前状态
# reset:手动回退
git reset --hard HEAD
# 也会恢复,但 abort 更安全
何时使用 abort
| 推荐使用 | 不推荐使用 |
|---|---|
| 冲突刚发生时 | 已解决部分冲突 |
| 需要重新规划合并策略 | 已投入大量解决时间 |
| 合入了错误分支 | 只剩少量冲突 |
注意事项
Bash
# abort 前确认
# 已解决的冲突会被丢弃!
# 如果已解决部分冲突但想保留
# 建议用 stash
git stash
git merge --abort
git stash pop # 恢复解决内容
无法 abort 的情况
Bash
# 如果合并前有未提交的变更
# abort 可能无法完全恢复
# 建议:合并前确保工作区干净
git status
git stash # 暂存变更
git merge feature
abort 是安全的取消方式,工作区恢复到操作前状态。
要点总结
git merge --abort中止合并git rebase --abort中止 rebasegit cherry-pick --abort中止 cherry-pick- abort 后工作区恢复到操作前状态
- 合并前保持工作区干净,便于 abort
📝 发现内容有误?点击此处直接编辑