Git 回滾遠程倉庫代碼

Git 回滾遠程倉庫代碼

Git 回滾遠程倉庫代碼,并保證重新提交后diff任然存在

git revert 和 git reset 的区别

比较点git revertgit reset
作用创建一个新的 commit,用来“反做”某个提交的内容移动分支指针到指定的历史 commit(会改动历史)
是否保留历史记录✅ 是,原来的提交记录还在❌ 否(被 reset 的提交不在历史链上了)
是否安全(适合多人协作)✅ 安全:不会影响他人❌ 危险:会导致别人 pull 冲突
适合场景想撤销某个 commit 的影响,但保留提交记录(例如线上 hotfix 撤销)想彻底丢弃提交记录、重置历史(多用于本地误操作修复)

操作

很顯然,要實現該需求只能使用git reset。下面是詳細步驟

# 示例
git checkout release_20250515
git reset --hard <merge_commit_id> (需要回滾到的那個connit_id)
git revert -m 1 <merge_commit_id>  (需要清除的那個connit_id)
git cherry-pick <merge_commit_id1> <merge_commit_id2> (非必須)
git push origin release_20250515 --force

舉例:merge_commit_id 獲取位置
merge_commit_id

  • 强推注意: 有些代碼倉庫會設置保護分支,需要先解除后才可以强推(下面舉例雲效)
    在这里插入图片描述

✅ 总结一下操作目的:

操作目的
reset --hard 到 merge 之前回到干净状态
revert -m 1 <merge>清除合并记录,未来可以重新合并
cherry-pick 其他提交恢复你需要保留的内容
force push更新远程分支为清理后的版本

git revert -m 1 <merge_commit> 是什么意思

这是专门用来撤销一个合并提交(merge commit)的指令。

首先看什么是 merge commit?
合并两个分支,比如你从 meituan_2025 合并到了 release_20250515,Git 会产生一个「merge commit」,这类提交有两个 parent:

commit abc123 (merge)
├── parent 1: release_20250515
└── parent 2: meituan_2025

🧠 再看 -m 1 是什么意思?

  • m 表示:你要保留哪一个 parent 的内容,Git 才知道怎么“反做”这个 merge。
  • m 1:表示以 parent 1(通常是当前分支)为主,撤销掉引入的 parent 2(被合并分支)内容。
  • m 2:相反,以 parent 2 为主,撤销掉 parent 1 的改动。

📌 举个例子:
你执行了:

git merge meituan_2025

然后想撤销这次合并,但保留 release_20250515 原来的内容,可以执行:

git revert -m 1 <merge_commit_id>

它会生成一个新的 commit,把 meituan_2025 中引入的内容反向覆盖掉,但并不会影响 Git 历史,也不会阻止你将来重新 merge。

总结建议

如果你要…建议用
把最近几次 commit 彻底丢掉(本地误操作)git reset --hard
撤销某次 commit,但不改历史git revert <commit>
撤销某次 merge,又想将来能重新合并git revert -m 1 <merge_commit>
回退某次 merge,并同时丢弃后续提交git reset --hard 到 merge 前 + git revert -m 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细水长流永不粹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值