【git】git revert 撤销制定提交,包括merge branch方法
使用git revert。
·
假设最后两个提交依次是:
- 最新的:merge branch(合并提交)
- 次新的:普通提交
使用 git revert 撤销时需要注意合并提交的特殊性:
操作步骤
1. 确认提交历史
git log --oneline -3
输出类似:
abc1234 (HEAD -> your-branch) Merge branch 'feature-xxx'
def5678 Some regular commit
ghi9012 Previous commit
2. 先撤销合并提交(最新的)
# 撤销合并提交,需要指定 mainline 父节点
git revert -m 1 abc1234 --no-edit
说明:
-m 1:指定保留第一个父节点(通常是合并目标分支)abc1234:替换为实际的合并提交哈希--no-edit:使用默认的提交消息
3. 再撤销普通提交(次新的)
# 撤销普通提交
git revert def5678 --no-edit
4. 推送到远程
git push origin your-branch
详细解释
为什么需要 -m 选项?
合并提交有两个父节点:
- 父节点1:合并目标分支(如 main/develop)
- 父节点2:被合并的分支(如 feature-xxx)
-m 1 表示撤销合并时,保留父节点1的更改,撤销父节点2引入的更改。
验证撤销结果
# 查看撤销后的状态
git log --oneline -5
# 查看文件状态
git status
替代方案:一次性撤销
如果不想创建两个 revert 提交,可以一次性操作:
# 一次性撤销最后两个提交
git revert HEAD~1..HEAD --no-edit
# 但这样可能需要手动解决合并提交的冲突
注意事项
- 顺序重要:必须先撤销合并提交,再撤销普通提交
- 可能冲突:撤销合并提交时可能出现冲突,需要手动解决
- 团队协作:通知团队成员这些更改
- 备份建议:操作前可以创建备份分支
git checkout -b backup-before-revert git checkout your-branch
完整示例
# 1. 查看提交历史
git log --oneline -3
# abc1234 Merge branch 'feature-xxx'
# def5678 Some regular commit
# ghi9012 Previous commit
# 2. 撤销合并提交
git revert -m 1 abc1234 --no-edit
# 3. 撤销普通提交
git revert def5678 --no-edit
# 4. 推送更改
git push origin your-branch
这样操作后,会创建两个新的 revert 提交,分别撤销原来的两个提交的更改。
更多推荐
所有评论(0)