Git:如何撤销已经提交的代码


场景一:

彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!
做push操作了,但是我想撤回来

命令方式:

1.输入git log 查看所有提交的版本

注意:黄色字体中 commit后面的一串码就是每一个版本号对应的码

2.回退到指定版本

== 注意:--hard 删除工作空间改动代码,撤销commit,撤销git add . ==

git reset --hard 版本号

reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

3.推送代码

git push origin master -f

场景二
例如:
写完代码后,我们一般这样

git add . //添加所有文件

git commit -m "本功能全部完成"

执行完commit后,想撤回commit,怎么办?

说一下个人理解:

HEAD^的意思是上一个版本,也可以写成HEAD~1

如果你进行了2次commit,想都撤回,可以使用HEAD~2

至于这几个参数:
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft
不删除工作空间改动代码,撤销commit,不撤销git add .

--hard

删除工作空间改动代码,撤销commit,撤销git add .

注意完成这个操作后,就恢复到了上一次的commit状态。

顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:

git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。


或者在IDEA中操作:


选soft 或者 mixed 都可以,这个你本地开发的代码不会丢失。

查看代码已经撤回了

4.git push 重新提交会报错;
把撤回的状态推送到线上仓库里,因为此时只是在本地撤回代码了,还没有同步到线上

这是因为撤回后,本地仓库里的版本小到线上仓库的,所以被拒绝
下面强推一下就可以了,
5.使用git push --force
执行完上面的命令后,线上仓库里的提交就被撤回了。
然后,自己在本地再修改代码,测试好了,再重提交代码

add .  
add commit -m"edit code"  
add pull 
add push

转载于:https://blog.csdn.net/weixin_38750084/article/details/103164813?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
转载于:https://www.cnblogs.com/yalong/p/9889844.html

更多参考:
https://blog.csdn.net/asoar/article/details/84111841


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM