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

git代码写错分支恢复

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

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

相关文章

分布式计算

分布式计算

简介 分布式系统(distribute system) 由多台计算机和通信的软件组件通过计算机网络连接(本地网络和计算机网络)组成.分布式系统是建立在网络之上的软件系统. 正是因为软件的特性,所以分...

jenkins配置注意项

jenkins配置注意项

丢弃旧的构建保持构建的天数 3天 #看服务器空间而定 保持构建的最大个数 3个 #看服务器空间而定 布包保留天数 3天 #看服务器空间而定 发布包最大保留#个构建 3个 #看服务器空间而定...

Idea生成Diagrams关系图的生成

Idea生成Diagrams关系图的生成

如何使用Idea中的Diagrams将类之间的关系以图的形式展现出来呢,如何生成下图呢?这是今天发现其他网站的一个图(其他网站的与这个图基本一样,这个是我自己画的) 首先找到我们的核心类Disp...

发表评论

访客

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