Git指南

您所在的位置:网站首页 军职在线学过的课程找不到了 Git指南

Git指南

2024-07-11 10:08| 来源: 网络整理| 查看: 265

在有一次使用git时,我提交commit后,并未push,然后直接切到了当前分支的某个tag,最后我想切回来的时候,竟然找不到我刚才提交commit的节点了…

关联篇

Git指南 - 你该掌握的那些基础认知和首次配置Git指南 - 项目实战中天天用的那些基础命令Git指南 - 通过规范使用Git来证明你是一个牛牛Git指南 - 我经常遇到的那些项目实战场景Git项目实战 - 我遇到的那些Git问题是这么解决的Git指南 - 刚提的commit 怎么找不到了(游离分支)?

小步阑珊,应好过固步不前

问题场景解决方式游离分支

问题场景

具体有以下几步:

本地提交 commit 未 push切换tag 或 分支最后无法找到之前的commit节点,导致切不回最新的代码 解决方式

这种解决方式在我看来属于曲线救国,如果以后有更好的,我应该会再来补充

步骤1:通过 git reflog 查看当前分支的所有提交记录(惯性思维可能会直接用git log ,并不适用于当前场景)

在这里插入图片描述

步骤2:找到 commit 记录,基本就解决了一半问题; 接下来,新建分支,回滚代码

上图 标红区域为 操作 git 后的 hash值 ,都是唯一的(我们需要切换到哪个节点,就需要用到对应节点的hash值)新建一条临时分支,用于存储最新节点最新代码

新建临时分支(一般会直接切换新建的分支)

git checkout -b "tmpLiu"

就在临时分支中 git reset --hard 最新commit hash值

git reset --hard e795...

步骤3:切换回之前的分支,合并临时分支(合并完成后,可删除临时分支)

切换分支

git checkout 之前分支

合并分支

git merge tmpLiu

Hint:下方的游离分支同该处的解决方式基本相同,只是多了一些示例,有不懂的话也可以去看看

最终解决

在这里插入图片描述

游离分支

在解决问题中 和 解决问题之后,我才发现原来这种操作涉及到游离分支的一些相关知识; head指针处于游离状态,需要建立一个分支然后将它合并到master分支,最后删除那个临时分支即可。

别人遇到的场景同我稍有不同,是在提交代码时 git push xxx xxx 报错,但是解决方式相同,具体如下

git push origin dev ,报错:error: src refspec dev does not match any

在这里插入图片描述

从图中可以看出当前在 HEAD detached from origin/dev 分支下,此为游离分支,是匿名的

解决方式

查看在游离状态下提交的 最新commit号:执行 git reflog 命令或者执行 git branch -v 命令,两者其一即可 git refloggit branch -v

可以看到最新commit号是:8708fbb(如果自我感觉 git branch -v 显示不全的话,可以直接用 git reflog)

在这里插入图片描述

创建一个临时的分支,创建完成之后切换到该分支上查看一下 git branch temp 最新的commit号 //示例: git branch temp 8708fbb 切换到要合并的分支上 git checkout 要合并临时分支的分支名称 //示例: git checkout dev 合并分支 git merge temp 删除临时分支 git branch -d temp 推送合并后的分支到远程仓库 git push origin 分支名称:远程分支名称 //示例: git push origin dev 最后就不放图了,你可以在当前分支,直接通过 log 查看最终结果


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3