Git 分支恢复指南:轻松找回被误删的分支


嘿,各位开发者!你是否曾经不小心删除了一个还没合并的 Git 分支,然后心里一惊,冷汗直流?别担心,这绝对是每个程序员都可能遇到的“惊魂一刻”。好消息是,Git 非常强大,它内置了“后悔药”,让你能够轻松找回丢失的分支。

这篇文章将用最简单直白的方式,带你一步步恢复被误删的本地分支。

核心武器:git reflog

要找回被删除的分支,我们首先需要认识一个强大的 Git 命令:git reflog

你可以把它想象成是 Git 的一个操作日志。 它记录了你在本地仓库中几乎所有的操作,比如切换分支、提交、重置、合并等等。 无论你执行了什么命令,reflog 都会默默地帮你记下,当然也包括删除分支的操作。

git log 不同的是,git log 只会显示当前分支的提交历史,而 git reflog 则记录了所有分支的变动历史,甚至包括那些已经被删除的分支的记录。

恢复三步走:轻松搞定

好了,理论知识就说这么多,我们直接上干货。恢复一个被误删的分支,只需要简单的三步。

第一步:找到被删除分支的 “遗骸”

假设我们不小心删除了一个名为 feature-login 的分支。

git branch -D feature-login

现在,让我们用 git reflog 来查找它的踪迹。在你的终端里输入:

git reflog

你会看到一长串的操作记录,类似于下面这样:

7a1b2c3 HEAD@{0}: checkout: moving from feature-login to main
a3b4c5d HEAD@{1}: commit: add login button
...

每一行都代表一个操作。我们需要做的,就是在这份日志里找到删除 feature-login 分支前的最后一次提交。通常,这个提交的描述会和你在这个分支上的最后工作内容有关。

请注意每一行前面的那一串由字母和数字组成的字符串,比如 a3b4c5d,这就是我们需要的**提交哈希值 (commit hash)**。

第二步:创建新分支,让 “遗骸” 复活

一旦你找到了那个宝贵的提交哈希值,就可以用它来创建一个新的分支,这个新分支的内容将和被删除的分支一模一样。

执行下面的命令:

git checkout -b <new-branch-name> <commit-hash>

这里的 <new-branch-name> 是你想要创建的新分支的名字,为了方便,我们通常会使用和原来一样的名字。 <commit-hash> 就是你在上一步中找到的那个提交哈希值。

例如,我们找到了 feature-login 分支最后一次提交的哈希值是 a3b4c5d,那么我们就执行:

git checkout -b feature-login a3b4c5d

这个命令会创建一个名为 feature-login 的新分支,并把它的内容恢复到 a3b4c5d 这次提交的状态。

第三步:确认恢复成功

现在,你可以用 git branch 命令来查看一下当前的分支列表:

git branch

你会惊喜地发现,feature-login 分支已经回来了!

真实案例:小明的 “惊魂半小时”

小明是一位前端工程师,他正在开发一个新的用户注册功能,对应的分支是 feature-registration。周五下午,就在他准备下班的时候,不小心把这个分支给删掉了,而且这个分支还没有推送到远程仓库。

小明顿时慌了神,但很快他想起了 git reflog 这个“救命稻草”。

  1. 他在终端里输入 git reflog,然后仔细地在操作日志里查找。他记得最后一次提交是关于“添加邮箱验证功能”的。很快,他找到了那次提交的哈希值:f9d7e8c

  2. 接着,他立刻执行了恢复命令:

    git checkout -b feature-registration f9d7e8c
  3. 最后,他用 git log 检查了一下新分支的提交历史,确认所有的代码都回来了。小明长舒一口气,开开心心地去过周末了。

总结

看吧,恢复被误删的 Git 分支其实并没有那么可怕。只要你理解了 git reflog 的工作原理,并且按照上面的步骤来操作,基本上都能化险为夷。

关键点回顾:

  • git reflog: 你最强大的盟友,记录了你所有的 Git 操作。
  • 提交哈希值: 恢复分支的关键钥匙。
  • git checkout -b: 让你的分支“起死回生”的魔法咒语。

希望这篇文章能帮你消除对误删分支的恐惧。记住,大胆地去使用 Git,即使犯了错,也总有办法可以补救!


  目录