首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

git如何正确回滚代码

01

方法一,删除远程分支再提交

首先两步保证当前工作区是干净的,并且和远程分支代码一致

$ git co currentBranch

$ git pull origin currentBranch

$ git co ./

备份当前分支(如有必要)

$ git branch currentBranchBackUp

恢复到指定的commit hash

$ git reset --hard resetVersionHash //将当前branch的HEAD指针指向commit hash

删除当前分支的远程分支

$ git push origin :currentBranch

$ //或者这么写git push origin --delete currentBranch

把当前分支提交到远程

$ git push origin currentBranch

02

方法二,强制push远程分支

首先两步保证当前工作区是干净的,并且和远程分支代码一致

备份当前分支(如有必要)

恢复到指定的commit hash

$ git reset --hard resetVersionHash

把当前分支强制提交到远程

$ git push -f origin currentBranch

03

方法三,从回滚位置生成新的commit hash

首先两步保证当前工作区是干净的,并且和远程分支代码一致

备份当前分支(如有必要)

使用git revert恢复到指定的commit hash,当前分支恢复到a>3版本(见下图)

a)此方法会产生一条多余的commit hash&log,其实1c0ce98和01592eb内容上是一致的

b)git revert是以要回滚的commit hash(1c0ce98)为基础,新生成一个commit hash(01592eb)

$ git revert resetVersionHash

④提交远程分支

$ git push origin currentBranch

04

方法四,从回滚位置生成新的分支merge

首先两步保证当前工作区是干净的,并且和远程分支代码一致

备份当前分支(如有必要)

把当前工作区的HEAD指针指向回滚的commit hash(注意不是branch的HEAD指针)

Notice:这个时候工作区HEAD没有指向分支,称为匿名分支detached HEAD

这个时候提交commit后无法保存状态,git中的任何提交必须是在当前工作区HEAD所在分支的HEAD上进行push hash入栈,所以HEAD必须是属于某个分支的HEAD位置,提交才生效。

$ git co resetVersionHash

以该commit hash创建一个新的分支

$ git co -b newRevertedHash

切换到当前分支,合并newRevertedHash。

$ git co currentBranch

$ git merge newRevertedHash

进行代码diff,完成代码回滚,push到远程currentBranch

Notice: 也可以直接hotfix,从要回滚的地方直接重新打包一个新tag包,发版本hotFixVersion即可。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621B1EL4300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券