加粗样式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)分支操作