V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
a1208340028
V2EX  ›  git

git 切换分支问题

  •  1
     
  •   a1208340028 · 22 天前 · 1990 次点击

    git reflog 的全部日志 切换分支,少了 3 个版本号,有大佬解疑吗,会是 orgigin 、HEAD 这些问题吗 img

    16 条回复    2025-08-12 21:58:03 +08:00
    a1208340028
        1
    a1208340028  
    OP
       22 天前
    执行 reset: moving to bfc86af4e3c3c7a912fdbade12163845279f17b8 这个命令,是我 git log 发现少了 3 个提交的版本号,然后我以为是有什么原因,然后就执行 git log ,然后 reset 到我最新的提交版本号,切回分支时就没有这个 3 个版本号
    NessajCN
        2
    NessajCN  
       22 天前
    bfc86af 这个是 origin/直 xx, 也就是远程仓库的 commit
    你提交的那俩都只在本地 commit 了,origin 那边没同步
    所以你切回 origin/直 xx 还是 bfc86af
    a1208340028
        4
    a1208340028  
    OP
       22 天前
    @NessajCN 但是都是本地,我本地回到分支,为什么是回到了我 origin 的版本,而不是我本地已 commit 的版本号
    a1208340028
        5
    a1208340028  
    OP
       22 天前
    https://raw.githubusercontent.com/1208340028/mall/refs/heads/main/952988-acaxca515as.png 这个可以看到我执行 reset ,执行的 git log 版本,确实是 origin 那边的版本,而不是我本地已提交的 3 个版本号
    NessajCN
        6
    NessajCN  
       22 天前
    @a1208340028
    po 一下你的 git branch 输出
    GeruzoniAnsasu
        7
    GeruzoniAnsasu  
       22 天前


    checkout 到这两个 hash 看看呗
    a1208340028
        8
    a1208340028  
    OP
       22 天前
    大概操作流程:
    1.远程仓库,origin 与本地 head 一致:bfc86af
    2.我提交了:1abb9e9
    3.再次提交:6775815
    4.需求没有做完,提交了 tmp:0fb4ce0
    5.切换到 main 分支,
    6.main 分支开发完毕,提交到 origin
    7.切回开发分支
    8.然后发现我本地提交了 3 个版本消失
    9.查看当前分支,误以为第一个版本为 tmp ,执行 reset bfc86af
    10.发现还是少了 3 个版本
    11.执行 reflog ,回滚到 tmp 版本,reset 0fb4ce0
    NessajCN
        9
    NessajCN  
       22 天前 via Android
    @a1208340028 反正从 log 来看你 ckeckout 的就是 origin/直 xx 而不是本地直 xx 。
    我也不知道你具体咋 checkout 的,猜一下的话是不是本地直 xx 跟远程直 xx 名字有出入…
    unused
        10
    unused  
       22 天前
    把每一步的命令贴出来
    skiy
        11
    skiy  
       22 天前
    我看你不是切到本地的直分支,而是远程分支。建议你 history 看看操作记录。WIN 我不知道怎么查操作记录了。你是不是 git switch origin/直 XX 了?
    unused
        12
    unused  
       22 天前
    reflog 没打码的第一步就错了,“moving from 直 to bfc86” 说明你从分支 checkout 到了这个 commit. You are in 'detached HEAD' state.
    Leon406
        13
    Leon406  
       22 天前
    origin/直, 直 远程和本地分不清楚

    代码开发了,tmp 保存在本地分支 直,
    切换分支到 main,开发完又切换到 origin/直
    Leon406
        14
    Leon406  
       22 天前
    如果命令行没有退出,执行 get-history 发下历史记录,确认是不是切到远程开发分支了
    a1208340028
        15
    a1208340028  
    OP
       22 天前
    @Leon406
    2 git branch
    3 git add .
    4 git commit -m "update:调整"
    5 git push
    6 git branch
    7 git branch
    8 git checkout 直播间
    9 git branch
    10 git log
    11 git reset --hard bfc86af4e3c3c7a912fdbade12163845279f17b8
    12 git reflog
    13 git reflog
    14 git reflog
    15 git reset --hard 0fb4ce0
    16 cls
    17 git reset --hard 0fb4ce0
    18 git reflog
    19 git log
    20 git reflog
    Leon406
        16
    Leon406  
       22 天前
    @a1208340028 #15 缺少特性分支之前相关操作,看起来这些操作没有问题,
    应该是切换 main 之前进行了什么操作


    发现问题了,正好被你多打码的那一行
    你从直播分支切换到是临时分支(只有 hash 值),没有分支名,
    根本没有在直播分支上修改...
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5337 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 07:45 · PVG 15:45 · LAX 00:45 · JFK 03:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.