一篇文章轻松掌握Git代码回退

一篇文章搞定使用git回退提交代码

以下介绍三种回退代码的方法,和不会将提交的代码保留在工作区

方法 1:使用 git revert(推荐,安全,会保留提交记录)

  • 这个命令会创建一个新的提交来撤销之前的合并提交。因为revert不会改变现有的提交历史,所以适合公共分支,尤其是在多人协作的情况下,避免破坏他人的工作。关键点在于保留历史,安全回退,但需要处理可能的冲突。
# 切换到 sit 分支
git checkout fix

# 找到合并到 sit 的合并提交的哈希值(可通过 git log 查看)
git log --oneline --graph

# 要撤销合并提交使用 git revert -m 1 1234567
# 撤销普通提交(假设合并提交的哈希是 1234567)
git revert 1234567  # -m 1 表示保留合并前的第一条分支(fix 分支)的代码


# 推送撤销的更改到远程
git push origin sit
方法 2:使用 git reset --hard( 需强制推送,会覆盖提交记录)
  • 这个命令会将分支指针直接回退到指定提交,丢弃之后的所有更改。由于会重写历史,强制推送会影响其他协作者,适合个人分支或尚未被他人拉取的情况。优点是彻底回退,但风险较高,可能导致代码丢失。
# 切换到 fix 分支
git checkout fix 

# 找到合并前的最后一个提交哈希(假设是 1234567)
git log --oneline --graph

# 强制回退到合并前的提交(普通提交和合并提交指令一致)
git reset --hard 1234567

# 强制推送到远程(注意:会覆盖远程分支)
git push origin fix --force

方法 3:使用 git reset --mixed(需撤销提交但保留本地修改

  • 这里使用混合模式的reset,回退提交但保留工作区的修改。适合需要撤销提交但保留本地更改的情况,比如想重新修改代码再提交。同样需要强制推送,但保留代码,适用于个人开发中的临时调整。
# 切换到 fix 分支
git checkout fix 

# 找到合并前的最后一个提交哈希(假设是 1234567)
git log --oneline --graph

# 回退到上一次提交(HEAD~1),但保留工作目录的代码修改
# 该指令等同于( git reset --mixed HEAD~1)和(git reset 1234567上一次提交的hash)
# 如果你希望代码修改也保留在暂存区(即 git add 后的状态),可以用 git reset --soft HEAD~1
git reset HEAD~1

# 强制覆盖远程的 fix 分支
git push origin fix --force

 三个方法对比:

方法是否修改历史是否保留代码修改适用场景风险等级
git revert不保留(代码状态回退)公共分支(多人协作)
git reset --hard + --force不保留(彻底丢弃代码)私有分支(需彻底回退)
git reset HEAD~1 + --force(默认 --mixed保留(代码留在工作目录)私有分支(需重新修改后提交)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值