Git 命令行教程:如何在 GitLab 中恢复已删除的分支

news/2024/11/17 2:34:30/

在软件开发过程中,版本控制是一个至关重要的环节。Git 是最流行的分布式版本控制系统之一,它能够帮助团队高效地管理代码。然而,有时候会发生意外,例如代码误合、错误的删除等情况,导致重要的开发分支本地和远程不慎被删除。本文将为您介绍如何使用 Git 命令行在 GitLab 中恢复已删除的分支,帮助您快速解决这类问题。

第一步 查看 Reflog

Reflog 记录了本地仓库中的引用更改历史,包括分支的删除。首先,进入您的项目根目录,并打开终端或命令行。运行以下命令查看分支的 Reflog:

git reflog

_20230722194119.png

在输出中,您将看到提交号(commit hash)以及删除分支之前的引用号。记住这个引用号,它将帮助您恢复被删除的分支。

第二步 恢复分支

现在,您已经有了删除分支之前的引用号,可以使用以下命令在本地仓库中恢复分支:

git checkout -b dev_xj d9244f1

dev_xj:你的分支名,可以和之前删除的一样,也可以重新命个名
d9244f1: 最后一次commit 的提交号或者引用号

_20230722194928.png

第三步 推送分支

如果您希望将恢复的分支同步到 GitLab 远程仓库,可以使用以下命令将分支推送到 GitLab:

git push origin dev_xj

注意事项

Git 会定期清理过期的 reflog 记录,以减少仓库大小。默认情况下,过期的 reflog 记录会在 90 天后被删除。如果需要修改过期时间,可以通过配置 gc.reflogExpire 和 gc.reflogExpireUnreachable 参数来调整

# 设置 reflog 记录的保留时间为 180 天
git config gc.reflogExpire 180.days# 设置无法访问的 reflog 记录的保留时间为 180 天
git config gc.reflogExpireUnreachable 180.days

git commit -m “message” 描述建议

可以看到我们在恢复的过程中是根据提交message来找到,当我们开发的时候分支较多并且有bug修改的分支时我们不好定位提交号,我们示例中的message写的比较随意,是反例,家人们切勿模仿;编写良好的提交信息是一个良好的开发实践,它可以让你和其他开发人员更好地理解提交的目的和内容。以下是提交信息的规范模板和一些建议:

模板

<type>(<scope>): <subject>
<!-- 空行 -->
<body>
<!-- 空行 -->
<footer>

说明

字段必须描述
<type>修改类别
<scope>影响的范围(最好填写功能模块)
<subject>目的描述,不超过50个字符
<body>描述当前修改的行为详细信息或修改的目的
<footer>描述当前修改的标识(需求名称编号\bug名称编码等)

type 类型说明

说明
feat添加新特性
fix修复bug
docs仅仅修改了文档
conflict解决冲突
style仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
refactor代码重构,没有添加新功能或者修复bug
test增加测试用例
other前面未提到的情况

示例:

git commit -m "
feat(用户管理):修改列表展示字段- 用户管理列表添加性别展示
- 用户管理列表添加用户部门展示用户管理列表展示优化需求(20230701)
";

建议使用git命令行commit

总结

版本控制是现代软件开发中不可或缺的环节。Git 提供了强大的版本控制功能,让开发团队能够高效协作。但当意外发生时,我们也有方法来解决问题。通过本文介绍的 Git 命令行恢复方法,您可以轻松地在 GitLab 中恢复已删除的分支。希望这篇文章对您有所帮助,祝您在代码管理过程中一帆风顺!


http://www.ppmy.cn/news/977666.html

相关文章

解决报错:Can‘t connect to HTTPS URL because the SSL module is not available.

本人今天准备打开安装一个label-studio包&#xff0c;试了很多次&#xff0c;接连报如下错误&#xff0c;因此我就去找了一些解决方案&#xff0c;现在总结如下&#xff1a; 1、报错信息如下 2、解决方案如下&#xff1a; github上有对应的解决方案&#xff0c;链接&#xff…

Java调用HTTP接口

说明 Java调用HTTP接口可以使用Java的HttpURLConnection或HttpClient等工具 HttpURLConnection import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader;public class HttpExample {public static void…

excel中单行换成多行

今天碰以下情况&#xff1a; 这在excel表中是在一个单元格&#xff0c;现在需要对其进行转换&#xff0c;将一个单元格换成多行 步骤&#xff1a; 1.删除换行符&#xff0c;添加一个逗号 2.选择数据-分列-分隔字符-逗号-确定 3.复制上述数据&#xff0c;选择性粘贴-转置 完…

【docker】docker部署tomcat

目录 1.1 搜索tomcat镜像1.2 拉取tomcat镜像1.3 创建容器&#xff0c;设置端口映射、目录映射1.4 测试 1.1 搜索tomcat镜像 docker search tomcat1.2 拉取tomcat镜像 docker pull tomcat1.3 创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建tomcat目录用于存…

git 提示 不能合并

今天A分支合并B分支&#xff0c;提示“不能合并” 最终发现&#xff0c;是另一个分支的版本落后导致&#xff0c;但是git并未提示出来 有遇到这种问题可以先检查下版本

K8S系统监控:使用Metrics Server和Prometheus

Kubernetes 也提供了类似的linux top的命令&#xff0c;就是 kubectl top&#xff0c;不过默认情况下这个命令不会生效&#xff0c;必须要安装一个插件 Metrics Server 才可以。 Metrics Server 是一个专门用来收集 Kubernetes 核心资源指标&#xff08;metrics&#xff09;的…

关于阅读《重构的时机和方法》这本书所带来的启发

前言 近期&#xff0c;我阅读了由克里斯蒂安克劳森&#xff08;Christian Clausen&#xff09;写的、由郭涛翻译的《重构的时机和方法》这本书&#xff0c;读完这本书的内容你会发现《重构的时机和方法》是一本经典的软件开发书籍&#xff0c;它能够帮助软件开发人员提高代码质…

Centos8+Jenkins+微信小程序前端自动发布体验版

文章目录 **一、 实现&#xff1a;****二、项目&#xff1a;****三、环境配置&#xff1a;****四、步骤&#xff1a;****五、遇到的问题** 一、 实现&#xff1a; jenkins打通微信开发平台&#xff0c;自动上传代码 二、项目&#xff1a; 微信小程序原生开发 三、环境配置&…