首页 > 编程知识 正文

git回滚后提交覆盖,git提交后怎么回滚

时间:2023-05-04 08:50:34 阅读:17354 作者:4234

加粗样式git回滚操作

git回滚操作git图解(2)代码回滚

qpdkl

qpdkl

web前端开发

42人赞同了这篇文章

在第一篇git文章中介绍了对git的基本理解。 上一篇文章主要介绍了git的提交操作,本篇基于上一篇,重点是git代码的反向操作——代码回退。 网上关于git退步的文章很多,本文是个人理解实践的总结。 不恰当、不完整的地方请在评论区指出。

首先,让我们回顾一下git代码所在的五个领域。 分别称为工作区、车间、缓存区、本地仓库、远程仓库和远程分支。 下图:

1 .缓冲区代码覆盖工作区代码

场景:缓冲区中有上次的更改代码。 也就是说,以前执行过。

git add

如果想放弃当前的工作区代码,请重写缓冲区中的代码。

对应的命令:

//将缓冲区文件代码复盖到本地工作区:

git check outtest reset.txt

//复盖匹配的文件:

git check out*.txt

//覆盖所有文件:

获取检查输出。

2 .本地仓库代码复盖缓存区域代码

场景:意识到不再需要以前的add文件,也不想重新开始工作区间。

对应的命令:

//将本地仓库中的文件复盖到缓存区域:

git reset HEAD testReset.txt

//将匹配的文件复盖到缓存区域:

git reset HEAD *.txt

//将所有文件复盖到缓存区域:

千兆重置头。

注:更改的是缓冲区代码,而工作区代码保持不变。 (编辑器代码保持不变) ) )。

3 .本地仓库代码覆盖(常用)工作区代码) ) )。

上述两个场景在实际开发中并不常用,其次是本地仓库代码常用于覆盖工作区间代码。

场景:当前工作区间代码混乱(一般在更新或合并分支后),放弃当前更改;

对应的命令:

//将本地仓库文件代码复盖到本地工作区:

git checkout head testReset.txt

//将本地仓库中的所有文件代码覆盖到本地工作区:

千兆检查出头。

我知道本地仓库里有commit列表。 记录所有commit记录并确认commit列表中的说明。

查看提交id,查看提交记录(git commit记录)。

获取日志

git log --pretty=oneline

//查看过去的提交历史记录(包括撤消回滚记录)。

获取刷新日志

根据commit列表,工作区代码可以更灵活地回滚。

//本地工作区代码返回到上一次、上一次和前10个版本

git reset--硬件头^

git reset--硬件头^ ^

git reset--硬件头~ 10

//本地工作区代码回滚到指定版本。 “d362816”是commit id )

git reset --hard d362816

4 .远程仓库代码覆盖本地仓库代码(清除未推送的commit ) () ) ) ) ) ) ) ) ) )。

场景:合并分支、切换分支或更新代码可能会导致提交混乱。 未使用-rebase方法。 具体来说,它会自动生成commit,表明工作区代码经常发生冲突。 将工作区代码与在线代码匹配,并删除新生成的commit。

对应的命令:

//本地工作区代码回滚到远程版本

git reset- hard origin/master

写git reset命令不得不说它与git revert的区别:

git revert是新commit向前或向后滚动之前的commit,git reset直接删除指定的commit。

回滚这一操作几乎没有效果。 但是,日后继续merge以前的旧版本时会有差异。 由于git revert是在反向commit中“中和”一次之前的提交,因此日后合并旧branch时不会再次出现此部分更改,但因为git reset直接在某个branch中删除了某个commit,所以旧branch

git reset是将头向后移动一点,但git revert仍保持头前进。 但是,新提交的内容和要恢复的内容正好相反,可以抵消要恢复的内容。

git reset和git revert的区别:

5 .远程仓库代码回滚(在线代码回滚) ) )。

方案:提交了包含大量文件的commit。 发现问题,需要回滚,并将在线分支(master )回滚到上一次的commit;

虽然网上有删除分支并进行在线代码回滚的教程,但其操作实际上很危险。 因为常见的联机分支是主分支,不能删除此分支。

合理的做法是使用git reset或git revert方法回滚

git reset方式图解:

git revert方式图解:

可以使用git revert替换新的commit; (之所以不使用git reset而使用git revert,是因为保留commit便于后续代码恢复。)

对应的命令:

//替换上次提交的代码文件(保留上次的commit记录) )。

获取恢复头

git commit -m“回滚上次的commit”

git push origin master

参考资料:

时光机穿梭-廖雪峰官网

githu B- w team-xq/test git : git学习,博文测试工程

git how to : revertacommitalreadypushedtoaremoterepository

相关文章:

git图解(1)代码领域总结

git图解(3)分支操作

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。