cpp
git log --oneline 查看提交记录 找到要回退的前缀编码
git revert xxxx 针对普通的单次提交记录
git revert -m 1 xxxx 针对getMerage的提交记录
如果你有 多条不想要的提交 ,并且已经合并推送到远程,那么依旧不能用 reset(会把后面的提交都干掉)。
正确做法仍然是:逐条用 git revert****撤销这些不想要的 commit。
下面给你几种情况的处理方式。
情况 1:多条普通提交(不是 merge)
比如你要撤销这几条:
a8
a5
a3
直接逐条执行:
git revert a8
git revert a5
git revert a3
然后:
git push
顺序建议 从后往前 (从日志上方往下),避免冲突几率。
情况 2:要撤销的提交中有 merge commit
带 Merge xxx****的就是 merge commit。
撤销时要加 -m 1**,例如:**
git revert -m 1 <merge_commit_id>
多个 merge 也一样,一个一个来。
情况 3:要撤销的提交是连续的(例如第 2、3、4 条都不要)
不用一条一条 revert,可以一次性 revert 一个区间:
找到这个区间最早的提交 old_commit****和最晚的 new_commit**。**
比如:
a6
a5
a4 ← 不想要
a3 ← 不想要
a2 ← 不想要
a1
执行:
git revert a2..a4
它会自动生成多个 revert commit。
然后:
git push