Git指南 - 刚提的commit 怎么找不到了(游离分支)?

这篇具有很好参考价值的文章主要介绍了Git指南 - 刚提的commit 怎么找不到了(游离分支)?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

关联篇

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

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

问题场景

具体有以下几步:

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

解决方式

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

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

git commit 代码后找不到记录,Git、Svn,Android进阶之路,Git,commit丢失,游离分支

步骤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:下方的游离分支同该处的解决方式基本相同,只是多了一些示例,有不懂的话也可以去看看

最终解决

git commit 代码后找不到记录,Git、Svn,Android进阶之路,Git,commit丢失,游离分支


游离分支

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

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

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

git commit 代码后找不到记录,Git、Svn,Android进阶之路,Git,commit丢失,游离分支

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

解决方式

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

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

git commit 代码后找不到记录,Git、Svn,Android进阶之路,Git,commit丢失,游离分支文章来源地址https://www.toymoban.com/news/detail-785800.html

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

到了这里,关于Git指南 - 刚提的commit 怎么找不到了(游离分支)?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git命令合并某一个分支的某个commit到目标分支

    1. 应用场景 在A分支上提交了一个commit,B分支也需要提交这个commit代码,避免人工复制代码,可以使用git命令行操作。 2. 基本用法(实例讲解) 比如,我们的仓库中有 master 和 pre-master 两个分支,现在只想将 f 提交到 master分支。 现在将 f 提交到master分支,其实这个f字母是打

    2024年02月02日
    浏览(76)
  • Git-将某次commit从一个分支转移到另一个分支

            应用场景:多个分支并行开发的情况下提交到错误的分支上,或者开发版本都已经准备好了,但是release计划有变,需要调整release里面的features,那么我们可以优雅而从容的面对PM的要求。         多个分支并行开发的情况下,将某次commit提交错分支了,那么久

    2024年02月08日
    浏览(56)
  • idea git将某个分支内的commit合并到其他分支

    idea git将某个分支内的commit合并到其他分支 1.打开旧分支的代码提交记录 在IDEA中切换到新分支的代码,点击Git打开代码管理面板,在顶部点击Log:标签页(这个标签页内将来可以选择不同分支的个人/所有人的代码commit记录),左侧栏双击选择某个旧分支后将展示该分支的所有

    2024年02月03日
    浏览(60)
  • git——合并分支commit记录 squash提交

         在公司和别人协同合作时,作为开发需要向架构或者负责人提交mr以合并代码,为了提高review效率,有些负责人会要求一个mr仅保留一条commit记录方便代码比对review的观看,但是开发常常是很多需求和bug混合着写,不可能每个分支都暂存一下去其他分支查看吧,因此总会

    2024年02月14日
    浏览(65)
  • Git 的标准提交规范(Conventional Commits)& Git 分支管理

    其中,type 表示本次提交的类型,应该从以下几个类型中选择: feat:新功能 fix:修复问题 docs:文档更新 style:代码风格更新 refactor:重构代码 test:增加测试用例 chore:修改项目配置 [optional scope] 表示本次提交的影响范围,可以根据需要添加。 表示本次提交的描述信息,应

    2024年02月09日
    浏览(59)
  • git从某一个commit新建分支进行开发

    首先调用 git log 来查看历史commit信息 然后使用命令 git checkout [commitid] -b [new-branch-name] 来根据某个commit创建新分支 最后推送到仓库中使用命令 git push origin [new-branch-name] 就会在仓库中生成一个新的 branch 用于接下来的开发

    2024年02月09日
    浏览(56)
  • git篇---git clone 获取指定分支的指定commit版本

    快速设置— 如果你知道该怎么操作,直接使用下面的地址 强烈建议所有的git仓库都有一个README, LICENSE, .gitignore文件 Git入门?查看 帮助 , Visual Studio / TortoiseGit / Eclipse / Xcode 下如何连接本站, 如何导入仓库 简易的命令行入门教程: 创建 git 仓库: 已有仓库? 第一步: git clone [git-

    2024年02月11日
    浏览(46)
  • git同一分支上多个commit合成一个的操作

    1、首先git log——查看当前分支的提交记录 ,想要把圈起来的commit合成一个, 2、开始合并,敲下面这个命令 git rebase -i commitId commitId即找出要合并的几个commit的前一个commit的ID -i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着键盘摁下 i 键,我们就进

    2024年01月19日
    浏览(75)
  • git只合并某个分支某一次提交的commit

    今天遇到一个需求,因为业务原因,现已开发的部分功能,暂时不上线,只上线部分功能,但我们的所有功能都在同一个分支上,于是就需要把部分功能代码分离出来,一起来看看吧! 一、合并单个commit 首先,我们需要把 A 分支上提交的部分代码,放在 B 分支上 二、合并连

    2024年02月15日
    浏览(58)
  • git 查看当前分支最近一次提交的commit SHA

    获取当前分支最近一次commit SHA (长度为 40个 16进制数字的字符)命令如下: git rev-parse HEAD    获取简写(短) commit SHA git rev-parse --short HEAD  

    2024年02月10日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包