跳转至

Git reset代码回滚

git reset命令

使用Git回退命令reset回退代码到某次commit。需要回滚提交的代码的场景常常是如下三个:

  • 提交代码到错误Git分支;
  • 提交的代码不需要上线了,而同一分支有需要上线的代码;
  • 提交了不需要提交的代码。

解决办法:使用Git回滚命令reset

1
2
3
4
5
6
7
git log  查看历史提交记录
git reset HEAD                回退到当前版本(取消暂存区的内容)
git reset --hard HEAD^    回退到上个版本
git reset --hard HEAD^^   回退到上上个版本
git reset --hard HEAD~n 回退到前n次提交之前,若n=3,则可以回退到3次提交之前
git reset --hard id(commit hash值)   回退到指定版本,推荐使用这种方式
git push origin HEAD --force

电脑端回退

假若你始终在一台电脑上提交上传代码,如果你需要回滚到指定commit,

1.直接Git bash打开本地项目所在文件夹,

2.然后输入指令Git log会查看提交历史,

3.找到并复制你要的commit hash

4.输入指令git reset --hard 99363d8f75a8f3a512c5c0c4b17baa5dd5d0a098(commit hash 值)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
PS D:\361way> git logs
git: 'logs' is not a git command. See 'git --help'.

The most similar command is
        log
PS D:\361way> git log
error: cannot spawn less: No such file or directory
commit a7fce54371ef6d20f38c792199cef466ae2c7ae4 (HEAD -> master, origin/master, origin/HEAD)
Author: 361way <[email protected]>
Date:   Sun Oct 20 13:03:44 2024 +0800

    Update baseof.html

commit 99363d8f75a8f3a512c5c0c4b17baa5dd5d0a098
Author: yangbk <[email protected]>
Date:   Wed Nov 8 06:35:54 2023 +0800

    first commit
PS D:\361way> git reset --hard 99363d8f75a8f3a512c5c0c4b17baa5dd5d0a098
HEAD is now at 99363d8 first commit
PS D:\361way> git push origin HEAD --force

HEAD为指针,HEAD -> dev 当前分支为 master 。

电脑端和服务器有差异

如果你使用不同电脑提交上传,当你git log时,会丢失那几条提交记录。登录GitHub 到当前项目下,点击查看提交历史:

github-reset-commit

hard是强制执行的意思,执行上述某条命令后,本地文件就会被修改,回滚到指定commit SHA。如果再执行如下命令,则会强推到远程仓库,进而修改远程仓库的文件:

git reset --hard &  git reset --soft  &  git reset --mixed 的区别

  • hard -> 工作区、暂存区、commit 同时回滚
  • soft -> 保留工作目录、暂存区
  • mixed -> 保留工作目录

开发过程中,总是遇到不小心提交不能提交的代码,有了reset必杀技,再也不用担心错误提交代码了。

捐赠本站(Donate)

weixin_pay
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))