当前位置:首页 > 工具 > 正文内容

git代码写错分支恢复

淙嶙5年前 (2020-08-13)工具2179

起因:同事拉分支时是从dev拉的(原本应该从master),后续写的代码都在新分支上,也提交了,也推远程分支了。

分析:

由于远程也有代码,也不需要去做备份工作了,可以尽情的试错。可以试着用代码的回滚、暂存、切换分支、提取暂存代码、解决冲突(如果有)、提交代码…

git reset有三种模式: –soft –mixed –hard
git reset –soft commitId
//commitId 就是git log 查看到的 commit编号(SHA-1)
将HEAD引用指向给定提交(commitId)位置,索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有的版本状态改动是最小的。

git reset –mixed commitId
reset的默认模式,将HEAD引用指向给定的commitId,注意:这时候索引(暂存区)内容也变了,工作目录内容不变。这个命令也就是所把commitId之后提交的状态都去掉了,文件还在,commitId之后有哪些修改都会保留,并且可以通过git status查看。

git reset –hard commitId
将HEAD引用指向给定的commitId,同时,索引(暂存区)内容和工作目录内容(文件)都会变成这个commitId对应的内容。也就是说给定的commitId之后的所有修改(文件)都会丢失。这个命令会用在发版时现在定位到指定commitId(清除commitId之后文件),然后合并分支,然后发版。类似的情况都可以用。

图表表示:

  方式    影响范围
soft HEAD
mixed HEAD,Index/Cache
hard HEAD,Index/Cache, working Tree

除了reset –hard外 都可以用于本次操作。
当把代码reset后,就可以按照:暂存,切分支,取暂存,合并了

过程: 1.恢复到修改前的commitId,可以通过git log 查看,我是用sourceTree直接就找到commitId了
git reset d3b0972165dd522d79ac52cc3ac8842b8b6c53b1 Unstaged changes after reset: M pom.xml M …..其他的修改文件

可以通过git status再看下 git status

通过git stash 把暂存区的文件 存储起来 git stash

切换分支 git chechout feature/XXX

恢复 git stash pop

相关文章

dubbo中的负载均衡源码-RandomLoadBalance

dubbo中的负载均衡源码-RandomLoadBalance

随机分配分两种情况1.无权重对机器总个数做随机,看随机数落在哪个机器上。比如有ip为a,b,c的三台机器,放在list(invokers)中,那么直接random(list.size())获取到lis...

maven 数据源

maven 数据源

阿里镜像<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf>...

linux常用命令全拼(转)

linux常用命令全拼(转)

命令缩写:pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,类似于windows的任务管理器) 常用参数...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。