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

git代码写错分支恢复

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

起因:同事拉分支时是从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

相关文章

sonarQube
idea编译工程时出现Error:java: 无效的目标发行版: 1.8

idea编译工程时出现Error:java: 无效的目标发行版: 1.8

见图,从上述可以看出工程用的jdk1.7,而idea编译时采用的是1.8版本(应该idea新版本内置的jre是1.8吧,默认编译采用1.8) 修改:如下图 本文转自:https://blog....

使用IntelliJ IDEA查看类的继承关系图形

使用IntelliJ IDEA查看类的继承关系图形

最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟。 这次利用了IDEA的diagram,结果一目了然,也是好用...

发表评论

访客

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