这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战
前言
今天是小编总结的git操作的最后一章了,有没有你碰到的问题的解决方法呢。一起来看看吧!
如何撤销 commit 提交
一般我们写完代码后,是这样提交的:
git add . //添加追踪所有文件
git commit -m "feat(前端-Git学习详细笔记):更新撤销commit操作" //添加commit提交信息
但是commit写完提交信息后,突然想到还有一个地方代码没改到/保存,如果放到下一个commit却不合适(同一个功能修改,分成两个commit),原因详见上方的 版本控制工具的使用基本原则
执行此命令命令:
git reset --soft HEAD^
- HEAD^的意思是上一个版本,也可以写成HEAD~1
- 如果你进行了2次commit,想都撤回,可以使用HEAD~2
- 详见 reset三部曲
作用:将文件从
暂存区中撤回到工作目录中(仅仅是撤回commit操作,你写的代码仍然保留)
错误的git push提交成功后如何撤销回退
我们在使用Git进行版本控制时,有可能会出现这种情况。git push后发现提交的内容不是想要的,这时候我们怎么做呢,提交上去的内容是没有删除按钮的(比如github,或码云)。所以我们需要一些手段将提交上去内容撤销下来。
而要撤销,就要用到上面所学的
git reset
1、错误场景示范
Ⅰ- 当我撰写 [ commit ] 信息没注意到,以为是对的时候直接提交 --> 因为本人提交笔记时喜欢按 [ ↑ ] 找到之前的提交信息进行修改
Ⅱ- 此时可以看到,错误的 [ commit ] 已经提交了 (当然,适用场景不只是commit ,也可错误代码之类的)
2、回退操作
咱们操作稳重一点,使用git reset --soft HEAD~就好了(如果回退后代码也不想要,可以用
git stash,暂存,达到代码也回退的效果)
① git reflog
commits,它在git中扮演了一个重要角色,我们平常用的一些操作git clone ,git commit 都会产生commits,通俗的讲这个就是版本号,但是git reset并不会产生commits(不是不会产生,而是会产生 但是都是一样的),我们可以先看看自己项目中的commits,使用如下命令:
git reflog
② git reset --soft HEAD~
运行此代码后,我们的 [ HEAD ] 指向了上一个 [ commits ]
③ 查看缓存
此时你可以用
stash staus查看,会发现,之前提交的代码已经放回缓存区了如果你不想要此次提交所有代码,可以使用
git stash,然后再去清空即可(当然,本人此处还是需要的,所以要留下)
④ 重新撰写 [ commit ]信息
⑤ 强制提交
如果你重新撰写 [ commit ] 后马上重新push,你会发现无法提交: 因为我们当前落后远程一个版本!
所以此时直接强制提交即可,就能覆盖远程提交记录
git push -f
3、成功展示
- 在网站工作台首页能看到已经将更改后的 [ coommit ] 强制推送上来了
也许你会奇怪:为啥工作台上还能看到? 其实已经删了!!!你看下方
- 但是你查看提交记录,会发现之前错误的commit已经被覆盖