Git常用的回滚操作用法总结

Git常用的回滚操作

文章为原创内容, 总结开发过程中git回滚的操作, 转载请注明来源

本文记录在开发中遇到的最常用的代码回滚操作, 代码回滚属于危险操作,请谨慎操作

回滚本地分支

git reset (–mixed) [commit id]

回退到指定版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响)

该参数--mixedgit reset的默认参数
例如需要回退一个版本, 执行下面命令:

// 回退一个版本
git reset HEAD~1

需要回退到某个commitid(提交id通过git log查看), 如需要回滚到4a50c9f,则执行

git reset 4a50c9f

git reset --soft [commit id]

回退到指定版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)

git reset --hard [commit id]

回退到指定版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

git revert [commit id]

生成一个新的 commit,将指定的 commit 内容从当前分支上撤除

git revert -m [parent Id] [commit id]

当需要revert回滚两个分支合并后的一个公共提交, 此时需要加上-m选项来确认是第几个父id(也就是确认回滚哪一条分支); 可以通过git show [提交id] 来查看有几个父id

例子: 回滚到cad132423这个公共提交的第一个父节点
git revert -m 1 cad132423

回滚远端分支

案例: 需要回滚master上面的代码到4a50c9f

第一种方法

以下是步骤:

  • 先回滚到需要移除的comitid的前一次正确commitid
git checkout -b remote-v1 4a50c9f
  • 合并策略为强行保留现在的分支(假合并)
    合并中完全采用remote-v1的代码
git merge -s ours master
  • 推送到远程分支
// 也可以使用 git push origin HEAD:master
git push origin remote-v1:master 

第二种方法:

以下是步骤:

  • 先移除有代码错误的comitid, 撤销一连串的id用commidId..commitId, 参数--no-commit是用于后面手动提交
git revert --no-commit f7742cd..551c408
  • 正常提交代码
git commit -a -m 'This reverts commit 7e345c9 and 551c408'
git push origin HEAD:master

第三种方法[极不推荐]

该方法会强行覆盖远端分支的代码, 稍微不慎, 会导致其他人的代码丢失

以下是步骤:

  • 使用文章开头的方式回滚本地分支
  • 强行提交到远端分支
git push origin master -f
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值