当前位置: 欣欣网 > 码农

刚刚把git远程master分支删除了,求救...

2024-07-01码农

嗨,我是东哥。

最近,有同学求助:不小心把Git远程的master分支给删了,该怎么办?

说实话,能删除master分支,这位同学拥有的权限不低啊,那么,这个锅一般会由谁来背呢?要是这位同学是一个新人,那么,这个锅领导背定了,反之,则是你主责,领导次之;职场就是这么残酷😂

我之前在stackoverflow上刷到过该问题:

I have deleted the master branch of a project by mistake

我觉得这个答案还是挺靠谱的,见下图

下面,我将大概汇总一下该问题「 如何处理误删远程master分支的问题 」的解决方案。

一定不要慌!!!

Git是个相对容错性很高的系统,只要本地有代码,其实恢复远程分支也不是难事。

删除远程 master 分支的影响:

  1. 远程仓库的默认分支消失:如果 master 是默认分支,那么删除它会导致远程仓库没有默认分支。

  2. 团队协作影响:团队其他成员无法再从远程 master 分支拉取或合并代码。

  3. CI/CD 流程中断:许多 CI/CD 工具依赖于默认分支,删除 master 可能导致自动化构建和部署失败。

能否恢复?

只要你或你的团队成员有本地的 master 分支或者可以定位到曾经的提交点,就可以恢复远程的 master 分支。

恢复步骤

以下是详细的恢复步骤:

步骤 1:确认本地仓库是否有 master 分支

在你的本地仓库中,使用以下命令查看是否存在 master 分支:

git branch

如果 master 分支存在,它会列在输出中。如果存在,继续执行步骤 3。

步骤 2:检查本地 master 分支的最新提交

确保本地 master 分支有你想要恢复的最新提交:

git log master

步骤 3:恢复远程 master 分支

推送本地 master 分支到远程仓库:如果你的本地 master 分支有你想要的最新提交,你可以将其推送到远程仓库:

git push origin master

设置远程仓库的默认分支:如果 master 是远程仓库的默认分支,你需要重新设置它。你可以在远程仓库的设置中更改默认分支,也可以使用命令行:

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master

步骤 4:如果本地没有 master 分支

如果你没有本地 master 分支,但记得某个特定的提交,可以通过以下步骤恢复:

  • 找到你想要的提交:使用 git reflog 或其他方法找到你想要恢复的提交。

  • 创建一个新的 master 分支:创建一个新的 master 分支并指向你想要的提交:

  • git checkout -b master <commit>

  • 推送新的 master 分支到远程仓库:然后推送新创建的 master 分支:

  • git push origin master

    记住:删除远程 master 分支是一个严重的操作,一定要警惕!!!

    但出现问题也不要慌,只要你有本地的master分支或知道曾经的提交点,就可以有条理地恢复远程的master分支,并将影响降到最低。

    有同学可能会问: 如果我删除了本地的master分支,该如何恢复呢?

    直接执行这个命令就好了,如下:

    git branch master origin/master

    # 如何预防?

    好了,事儿解决完了,但是我们还得想办法预防这种情况再次发生。毕竟,删错分支这种事儿,要是常发生,那真的让人很崩溃。

    可以通过以下这几点措施来预防。

    1. 限制权限

    首先,最好限制分支操作的权限,不是每个人都能随便删除远程分支,尤其是像master这样的重要分支,可以通过设置Git的用户权限来实现这一点。

    2. 分支保护

    其次,可以对master分支进行保护。比如在GitHub上,可以在仓库设置里面的Branch Protection Rules里面设置对master分支的保护规则。这样可以防止分支被意外删除。

    3. 备份策略

    再者,定期备份代码。可以通过设定一个自动化的备份流程,每天或者每周定期备份代码,确保即使出现问题也能快速恢复。

    4. 加强培训

    最后,给团队成员进行相关培训,让大家了解Git的操作,尤其是那些可能带来灾难性后果的命令,提高团队的整体技术水平,减少误操作的可能性。

    作为程序员,如何管理代码,是你必须要学好的基本功,要是以前的话,我可能会推荐你用svn、cvs等代码管理工具,现在的话,直接学git吧,那些已经过时了😂

    来这个网站好好学一下Git的基本操作吧!

    Git入门手册:https://www.j301.cn/manual.html

    总之,删错分支这种事儿,不是常有的,但也不是绝无仅有的, 遇到问题,冷静处理,找到解决办法,吸取教训,避免再犯。

    好了,今天就聊到这里吧~

    热门推荐