关于git reset (回退)
关于git reset (回退)
-
未提交
-
在工作区做了修改,但未执行git add. 到暂存区
-
已经git add .提交到暂存区,但未执行commit 提交到本地仓库
这时候回退用git reset --hard 将删除所有痕迹
用git reset --soft 回退到暂存区并保留修改
-
-
已提交未推送 (已经add,commit 但未push 到远程仓库)
-
上个版本回退,执行git reset hard commit_id(commit_id是倒数第二个)
-
回退到指定版本 ,git reset --hard <commit_id>
-
已推送
-
git reset --hard commit_id
-
git push -f
总结:
未commit前,直接git reset。
提交,用git reset 加版本号
push推送加push -f
已经推送到远程仓库的,git reset 回退之后,千万别git pull ,否则之前的git reset就白做了,这个时候本地也是没有修改的文件,如果git push 将会报下面的错误,这个时候要强制推送 git push -f
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
1、git reset --mixed 版本号 :此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
本地工作目录内容以及暂存区内容保留
2、git reset --soft 版本号:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
本地工作目录内容以及暂存区内容全部回退至某一个版本
3、git reset --hard 版本号:彻底回退到某个版本,本地的源码也会变为某个版本的内容
本文作者:张尊娟
本文链接:https://www.cnblogs.com/wszzj/p/16177089.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步