git操作问题总结(三)

229 阅读3分钟

这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战

前言

今天是小编总结的git操作的最后一章了,有没有你碰到的问题的解决方法呢。一起来看看吧!

如何撤销 commit 提交

  1. 一般我们写完代码后,是这样提交的:

  • git add . //添加追踪所有文件

  • git commit -m "feat(前端-Git学习详细笔记):更新撤销commit操作" //添加commit提交信息

  1. 但是commit写完提交信息后,突然想到还有一个地方代码没改到/保存,如果放到下一个commit却不合适(同一个功能修改,分成两个commit),原因详见上方的 版本控制工具的使用基本原则

  2. 执行此命令命令: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 ,也可错误代码之类的)

image-20210813155746112

2、回退操作

咱们操作稳重一点,使用git reset --soft HEAD~就好了(如果回退后代码也不想要,可以用git stash,暂存,达到代码也回退的效果)

① git reflog

commits,它在git中扮演了一个重要角色,我们平常用的一些操作git clone ,git commit 都会产生commits,通俗的讲这个就是版本号,但是git reset并不会产生commits(不是不会产生,而是会产生 但是都是一样的),我们可以先看看自己项目中的commits,使用如下命令:git reflog

image-20210813154309057

② git reset --soft HEAD~

运行此代码后,我们的 [ HEAD ] 指向了上一个 [ commits ]

image-20210813154448889

③ 查看缓存

  • 此时你可以用stash staus查看,会发现,之前提交的代码已经放回缓存区了

  • 如果你不想要此次提交所有代码,可以使用git stash ,然后再去清空即可(当然,本人此处还是需要的,所以要留下)

    image-20210813154839981

④ 重新撰写 [ commit ]信息

image-20210813154928064

⑤ 强制提交

如果你重新撰写 [ commit ] 后马上重新push,你会发现无法提交: 因为我们当前落后远程一个版本!

所以此时直接强制提交即可,就能覆盖远程提交记录

git push -f

image-20210813155049169

3、成功展示

  • 在网站工作台首页能看到已经将更改后的 [ coommit ] 强制推送上来了

也许你会奇怪:为啥工作台上还能看到? 其实已经删了!!!你看下方

image-20210813155614570

  • 但是你查看提交记录,会发现之前错误的commit已经被覆盖
总结:小编的Git操作问题总结完了,希望对大家有帮助,当然也欢迎大家可以补充。