
现象一句话:
“把HEAD落在历史提交上→改完顺手gitcommit→切分支→刚才的commit‘消失’”。
根本原因:
你提交时HEAD是游离(detached)状态,没有分支指针指向它;切走后Git再也找不到那条commit,于是“好像没了”。
找回与保留的两步法
1.先找回“丢失”的commit
gitreflog#找到刚才那一步的HASH
#输出示例
#HEAD@{1}:commit:fix:xxx复制对应的HASH(如a1b2c3d)。
2.让分支重新指向它(任选一种)
-A.直接新建分支
gitbranchrescuea1b2c3d#把rescue指向该commit
gitswitchrescue#切过去,历史+修改都在-B.合并到当前分支
gitswitch目标分支#先回到你想合并的分支
gitmergea1b2c3d#把那次commit合进来以后避免再“丢”commit
-不要在游离HEAD上长期工作
想改旧版本→先建分支再改:
git switch -b新分支名<历史提交>这样HEAD立即被分支“拴住”,后续commit自然留在分支上。
-养成用reflog的习惯
任何“被切走”“被reset”的commit90天内都能通过reflog找回,真正“删除”只有gitprune+过期无引用。
一句话记住
“游离HEAD的commit没有分支指针=孤儿”
→改历史前先gitswitch-b新分支
→万一切丢,gitreflog+gitbranch新分支<HASH>秒找回。
#更多阅读
##大前端++
##Android推荐阅读
Cannotfitrequestedclassesinasingledexfile(#methods:93047>65536)
##开发工具链推荐
API开发工具postman、国内xxapi和SmartApi的性能对比
##心法杂谈
##健康杂谈
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。