git回退代码的n种方式(全场景,restore reset revert)
2023-12-20 05:38:56
内容概要:
介绍git restore
; git reset
; git revert
的用法以及常见场景下回退代码的方式。也会简单介绍一些git的基础知识。
正文:
1、git restore
git restore file1
: 针对暂存区的文件file1,将它回退到工作区,且撤销其修改。就是把你git add
之后的文件变成add
之前,同时你的修改会丢失git restore --staged file1
:针对暂存区的文件 file1,回退到工作区,但是保留修改。把你git add
之后的文件变成add
之前,但是你的修改会保留- 备注:
- 工作区:就是你本地的代码,未使用
git add
操作的文件所在位置。 - 暂存区:你使用
git add
添加之后的文件所在位置
- 工作区:就是你本地的代码,未使用
2、git reset
git reset commitId --soft
:回退当前代码仓库到指定提交commitId,当前HEAD和commitId之间的修改会保留,这些修改会在暂存区。就是保留了add
的状态git reset commitId --hard
:回退当前代码仓库的代码到指定commitId,这之间的代码会丢失。git reset commitId --mixed
:回退代码到connitId,修改保存在工作区,就是没有add
的状态
3、git revert
git revert commitId
:撤销指定提交commitId。会建立一个新的commit,这个commit的内容就是指定commitId的反向,也就是提交一个新的commit把commitId对应的修改内容还原。
常见代码回退场景
1、本地有修改,未执行git add
,想撤回修改。
执行命令 git restore file1
2、本地修改,执行了 git add
,想撤回。
git restore --staged file1
3、本地修改,已执行 git add
和git commit
,想撤回。
- 如果要保留
add
的状态,就执行git reset --mixed
- 如果不想保留
add
的状态,但是想保留修改。git reset --soft HEAD^
这里的HEAD^
指最近一次commit
,也可以直接用commitId
- 如果不想保留修改,直接舍弃代码。
git reset --hard HEAD^
4、本地修改,执行了git add
和git commit
,并且执行了git push
,但是此时其他人还未提交代码到同一分支。想撤回。
# 根据你是否想要保留修改代码,自由选择 --soft --mixed --hard
git reset --soft HEAD^;
# 执行要做的修改等操作,重新提交,或者丢弃代码
git push -f;
5、本地修改,执行了git add
和git commit
,并且执行了git push
,其他人也提交了代码到同一分支;或者过了很久,自己又提交了好多次commit,想撤回指定的这个commit,但是不撤回之后的commit。
# 先查看日志,找到commit n可以指定查看多少条日志
git reflog -n
# 复制对应commitId
git revert commitId
# 如果有冲突,解决冲突,如果没有直接push
git push;
文章来源:https://blog.csdn.net/gongxiaoyi9511/article/details/135094935
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!