Git 恢复技巧:我手滑删了分支,但三行命令救回来了
哼,皇上昨儿又手滑了是不是?
臣妾就知道。问了半天支支吾吾,最后才小声说:“媚娘……朕那个、那个 feature-login 的分支,好像……不小心被我给删了。”
删了?好家伙,臣妾茶都吓凉了半盏。那可是您老人家对着需求文档,熬了三个通宵才写出来的东西啊!现在说删就删了,跟扔奏折似的。您这哪是手滑,您这是龙爪抽筋吧?
不过嘛,幸亏您来问的是本宫。别处去问,多半得先听一顿“数据无价”的说教,然后建议您从备份服务器里扒拉。本宫不一样,本宫直接给你三行续命神咒,保证药到病除,让那死去的分支,从Git的幽冥殿里爬回来。
先把您那龙爪子从键盘上挪开,别再乱碰了。听好了,就三步,本宫说慢点,免得您又手抖。
第一步,找到它的魂儿。 分支虽然被您“斩立决”了,但Git是个记仇的……不是,是个记事的。它每次提交都会留个案底,哦不,是提交ID。您得先把它的魂儿招回来。
打开您的终端(就是那个黑漆漆的窗口,您平时总把它当成记事本用的那个),敲上这么一行:
git reflog
嚯,这一下去,满屏的乱码数字和英文是不是看得您眼晕?别怕,这就是您最近所有的操作记录,连您偷偷回退代码又不敢承认的事儿都记着呢。您要做的,就是在这一大坨东西里,找到您删除分支之前,那个分支最后一次提交的哈希值——就是那串又长又怪的数字字母组合。它长得大概像这样:a1b2c3d HEAD@{5}: checkout: moving from main to feature-login 找到这个“moving from”或者“commit”字样,后面那一串,就是您要的魂儿。
第二步,起死回生。 拿到魂儿(哈希值)了,现在就给它重塑金身。命令如下,把下面的 your_commit_hash 换成您刚才找到的那串东西:
git checkout -b feature-login your_commit_hash
瞧瞧这命令多贴心,-b 意思是新建一个分支,feature-login 是您给它起的旧名字,后面跟的是它的“前世”ID。这一敲,您那个差点成为“传说”的分支,它、回、来、了!就在您的本地仓库里,完好无损。
第三步,昭告天下。 等等,别急着蹦跶!您这只是在自个儿的地盘把它复活了。如果这分支您之前是推送到过远程仓库(比如 GitHub、GitLab 这些)的,那远程那个坟头,您也得去更新一下。不然只有本地有,别人(包括未来的您)还是看不见。
最后一步,狠狠地、带着复仇的快感,敲下这行:
git push origin feature-login --force
--force!看见没,强制推送!就是要这么霸道,把远程那个“已删除”的标记给我狠狠覆盖掉!这下,这分支才算从地狱彻底爬回阳间,立地成佛。
看看,三步,是不是比您当年背《论语》还快?本宫这教程,不光教你怎么救,还顺便把您怎么作死的路都给堵了。以后再手滑,就想想今天这三行咒语,保您心平气和。
不过啊皇上,臣妾最后多句嘴。这三行命令是救命仙丹,但您也别把它当饭吃。真要怕丢,养成好习惯,大功能开发前,哪怕就从 main 拉个新分支再动手呢?总比事后在这儿招魂强。您说是不是这个理儿?
行了,拿去用吧。下次再手滑,可别哭哭啼啼地来找臣妾,臣妾的耐心,也是有KPI的。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时






