git reset代码回退

在使用git工具进行代码管理时,代码的回退时一项经常要做的事,没有人能一下就把代码改到一个字母都改不了,甚至在提交时会犯下重大错误,如何修补呢?在这个过程中,无论时在修改、添加(add)、提交(commit)还是推送(push)阶段都有不同的命令。

1、本地工作区修改,但未add

git checkout ./ //将本地工作区所有修改文件回退到HEAD
git checkout -- <files> //仅回退单个(多个)文件

PS:修改不复存在

2、工作区修改文件已add到暂存区

git reset HEAD //将暂存区文件回退到工作区
git reset HEAD <files>

PS:修改仍然存在

3、已提交commit至本地版本库

git reset HEAD^ //回退至上一节点 HEAD^^上上节点
git reset <commit_id> //commit_id 为需要回退到的id。
PS:工作区修改仍然存在

git reset --hard <commit_id> //commit_id 为需要回退到的id。
git reset --hard HEAD^^ //^^为当前id和差值数量。

这里我们还可以使用git checkout <commit_id>来回退,等同于git reset --hard <commit_id>
PS:工作区修改被删除

差异自己操作两次就明白了。
有没有-- hard区别很大,后续的恢复修改也有差异。

如果你使用了git reset --hard <commit_id>带–hard的命令回退了版本;然后后悔了,要恢复,请参考我的另一篇文章:(点击下面链接)
https://blog.csdn.net/weixin_43083491/article/details/112618311

4、已push到远程仓库

这个就相对有点麻烦了

  • 4.1覆盖
    最简单的是再次提交一次正确的修改,问题是会留下一个commit_id,显得有点傻。
  • 4.2回退
    1、 首先回退本地分支
    回退到自己修改之前的那次修改
    git reset --hard <commit_id>
    2、推送到远程
    git push --force

其实这里有个疑问,如果在自己push上去之后,又有人提交了,那这样回退岂不把别人的提交给删除了吗?这里可以这样操作:
git rebase -i [commit_id] //any commit id
del pick[commit_id] //you want to rollback.
git push <branch> --force // is the branch you want to push

工作区、暂存区理解(这部分可参考廖雪峰老师网站)
https://www.liaoxuefeng.com/wiki/896043488029600/897271968352576
在这里插入图片描述
工作区(Working Directory)

就是你在电脑里能看到的目录

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当你使用git reset命令时,可以将本地代码回退到之前的某个提交状态。具体的回退操作取决于你想要回退到的提交位置。如果你想要回退到上一次提交的状态,可以使用命令git reset HEAD^。如果你想要回退到再上一次提交的状态,可以使用命令git reset HEAD^^。如果你想要回退到指定的提交位置,可以使用命令git reset <commit_id>,其中commit_id是你想要回退到的提交的ID。请注意,使用git reset命令回退本地代码时,工作区的修改仍然存在。如果你想要回退到指定提交位置并且丢弃工作区的修改,可以使用命令git reset --hard <commit_id>。然后,你可以使用git push origin <branch_name> --force命令将本地代码强制推送到远程仓库,其中branch_name是你的分支名称。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [git reset代码回退](https://blog.csdn.net/weixin_43083491/article/details/111320974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [git代码回退方法简要总结](https://blog.csdn.net/BHSZZY/article/details/125546547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值