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

git代码写错分支恢复

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

起因:同事拉分支时是从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) 由多台计算机和通信的软件组件通过计算机网络连接(本地网络和计算机网络)组成.分布式系统是建立在网络之上的软件系统. 正是因为软件的特性,所以分...

Kibana查询语言增强

Kibana查询语言增强

在6.0中,引入了一种实验性的查询语言Kuery。并将其应用到标准的Kibana查询语言中。因此,Kuery不再作为独立选项提供。使用Kuery保存的搜索将自动选择使用本页介绍的语言增强。 从6....

linux命令

linux命令

apt-get install net-tools -y #ifconfig等网络命令找不到时...

发表评论

访客

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