git提交多个文件到远程服务器,解决使用commit提交大文件无法推送到远程库问题及git rebase使用详解...

2023-11-13

解决这个问题并没有特别的(删除提交历史中某个文件,然后重新push),但是由于开始的使用失误,中间有使用git rebase和git reset命令处理,所以特此记录下

大文件无法push到远程仓库

问题

首先,故事(事故)的起因是这样的。

某次git push(类似测试使用,没有分支)到远程仓库时发生如下无法提交大文件的报错(大文件是一个pdf文件)

?

根据提示,如下查看大文件是哪个

1F0496003-0.png

commit的大文件无法push到远程库解决办法

首先说一下解决办法,需要修改提交历史,删除已提交到本地仓库的大文件的提交记录,

从commit的提交历史中删除指定文件的命令为git filter-branch --tree-filter 'rm -f 文件名' head

如下,删除大文件

?

执行删除成功会返回ref 'refs/heads/master' was rewritten提示,如果返回unchanged则表示没有任何更改。

如果文件路径包含空格需要用引号将删除文件路径包含起来。

然后重新push推送成功。

整体操作如下:

1F049CE-1.png

git filter-branch命令:

1F0491R2-2.jpg

git commit后的回滚

撤销已经提交的commit有两种方法:

使用 git reset --hard head^

使用 git rebase -i head~n

git reset --hard 丢弃最新的提交

代码提交后,需求发生变化导致之前提交的已经不合适,或者 代码提交后发现有严重bug,需要回滚可是使用这个命令:

git reset --hard head^

1,head^ 表示 最新提交head位置往回数一个提交, 几个 ^ 就往回数几个提交;

2,head~n 表示 最新提交head位置往回数n个提交

reset 命令只能回滚最新的提交。如果只想删除指定的某个提交,而保留最新的一次或两次commit,reset就无法做到了。

git rebase -i 丢弃指定提交

如果想撤销中间某次commit的情况,可以使用如下的命令:

git rebase -i head~2(列出最新的两次提交,然后决定对应提交的操作)

rebase -i是 rebase --interactive 的缩写;

git rebase -i 不仅可以删除commit, 还可以修改commit。 具体的可以查看rebase中提示的参数

如下执行git rebase查看命令参数:

?

常用的如下:

edit: 使用本次提交,在rebase到这次提交时候,会暂停下来等待修正

pick:使用本次提交,不操作修改

drop:删除这次提交

如下,修改查看最近3次的提交,然后删除(drop)倒数第三次commit,保存退出即可将倒数第三次commit中提交的所有内容删除

1F04a948-3.jpg

回滚最新的提交 :git reset 和 git rebase 命令都可以

回滚中间某次提交: git rebase 可以, git reset 不可以

如果提交已经同步到远程仓库,需要使用git push origin -f branch(分支名) 来将回滚也同步到远程仓库(master 分支谨慎使用 -f)

主要参考自

git rebase

git rebase执行失败后的退出

像上面,执行git rebase有可能导致失败,具体表现为bash中的仓库标识变为了(master|rebase 1/10)(m/n视reabse编辑内容而定)

1F0491Q3-4.jpg

解决办法是:执行git rebase --abort即可退出这个错误,回退到当前分支中,且数据和文件也都能恢复。

不小心git rebase后出现(master|rebase 1/10)的解决办法

git rebase成功后的回退

上面讲的是git rebase失败后的退出(,或回退),如果成功删除了某次commit,导致最终一些文件或数据丢失,如何恢复呢?

不要轻易使用 git rebase -i head 删除某次提交

git rebase -i head~2中删除某次提交的话,这次提交的所有更改和新增文件会全部取消,覆盖本地工作目录中的文件,也就是删除的这次提交和本次提交的上一次提交中间的所有更改都会取消,即使pick了删除提交的下一次提交,也无法保留(保留到最新提交时所有文件和文件夹的状态)

可以使用git reset --hard id命令,直接恢复commit到指定的提交时刻。

git reflog查看git提交记录

1F0495116-5.jpg

如上,可以直接看到需要恢复到的commit id是多少。比如恢复到id为71add05的时刻,执行git reset --hard 71add05等待恢复。本地仓库和文件就能恢复到指定提交时刻。

恢复指定的某次commit成功。

删除文件后需要执行git add -a或git rm ,将删除添加到暂存区, 如果执行 git add. 是不行的,区别如下:

git add -a 保存所有的修改(包括删除的文件、新增文件、已有文件的修改变更)git add . 保存新的添加和修改,但是不包括删除git add -u 保存修改和删除,但是不包括新建文件。

到此这篇关于记一次使用commit提交大文件无法推送到远程库解决问题过程及git rebase使用的文章就介绍到这了,更多相关commit提交大文件git rebase使用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/codemissing/p/git_push_bigfile_issue.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git提交多个文件到远程服务器,解决使用commit提交大文件无法推送到远程库问题及git rebase使用详解... 的相关文章

  • 毕业设计-基于 Matlab 的蚁群算法求解旅行商问题

    目录 前言 课题背景和意义 实现技术思路 一 蚁群算法原理 二 蚁群算法 三 蚁群算法的应用 基于蚁群算法求解旅行商问题 四 有关算法实现的部分程序展示 五 生成数据以及部分图形显示 代码部分 实现效果图样例 最后 前言 大四是整个大学期间
  • [docker]nvidia容器内nvidia driver,cuda driver,cuda toolkit的关系

    下图对三者的关系进行了表述 我们安装的显卡驱动是在主机上的 包括显卡驱动和CUDA driver 我们安装的CUDA则主要是CUDA toolkit 需要另外在docker容器内安装 或者 也可以直接拉取nvidia docker的镜像 参
  • Django N+1 ORM问题以及优化实现

    N 1 问题 理解 yH N 1 问题 理解实现 yH 直接上各段代码的试验 来源 QuerySet API 参考 Django 文档 Django models from django db import models from xxx
  • LeetCode-11

    11 盛最多水的容器 给你 n 个非负整数 a 1 a 2
  • [计算机毕设]基于java的题库及试卷管理系统设计与实现(源代码+项目报告)

    项目说明报告 Smart系统 题库及试卷管理模块的设计与开发 SMART系统是一个采用新思路 新架构 新技术开发出来的一个新型智能在线考试信息管理系统 该系统主要实现了学生在线考试与评估以及对各种评估信息的管理和维护 本文针对教育工作的具体
  • BES2300x笔记(13) -- 主从耳关键log解析

    哈喽大家好 这是该系列博文的第十三篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 对于BES平台 因为没有可视化的IDE 所以串口log就成了我们Debug时的主要辅助手段 通过添加串口打印信息 几乎可以调试我们开发时遇到
  • 企业监控服务器Cacti、nagios服务器

    Cacti监控服务器入门详解 作为一名Linux SA 日常最重要的就是保证网站正常稳定的运行 我们需要实时监控网站 服务器的运行状态 这时需要借助开源软件 cacti nagios zabbix等 监控来实现 Cacti是用php语言实现
  • 2021年4月记录(整合redis,springboot加载配置文件顺序)

    1 springboot 2整合redis 参考 1 1 连不上redis 改redis配置Unable to connect to Redis nested exception is io lettuce core RedisConnec
  • c++ 优先级队列priority_queue的使用

    c priority queue是对其他容器元素顺序的调整包装 堆的原理 1 定义 priority queue
  • Mac neo4j忘记密码,不删除数据处理方法

    首先进入neo4j的目录 比如 cd Users hhhhh Software neo4j community 4 3 3 如果neo4j启动 需要关闭neo4j服务 bin neo4j stop 然后打开配置文件 修改一下设置 vim c
  • PHP数据类型转换

    http www blogjava net zuofei bie archive 2010 03 31 317092 html PHP的数据类型转换属于强制转换 允许转换的PHP数据类型有 int integer 转换成整形 float d
  • 大模型系列活动现已开放全球讲者报名通道

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 AI TIME大模型系列活动定期特邀来自全球知名高校与研究机构的青年学者 分享最新大模型前沿动态 思辨大模型未来之路 今年以来 已邀请海内外150多位讲者 沉淀了近50场大模型系
  • SpringBoot整合调用微信模板方法实现微信公众号消息通知推送,Java实现微信公众号给关注用户推送自定义消息通知(手把手从0到1)

    目录 概述 公众号给关注用户推送自定义消息 一 申请公众号模板消息 二 获取安装 web开发者工具 三 微信网页授权说明 四 微信网页授权 流程时序图 五 HTTPClient 实现微信公众号消息推送与发布 四步走 六 通过weixin j
  • [转][QNX]对存储设备分区

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 email 174176320 qq com 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 命令格式 fdisk
  • acwing蓝桥杯刷题

    维生素C吃多了会上火 个人CSDN博文目录 2022蓝桥杯 目录 第一讲 递归与递推 1 递归实现指数型枚举 2 递归实现排列型枚举 3 简单斐波那契 4 费解的开关 5 递归实现组合型枚举 6 带分数 7 飞行员兄弟 8 翻硬币 9 总结
  • WSL2文件迁移到D盘

    查看当前wsl 通过输出看到当前的wsl名称是Ubuntu wsl l 适用于 Linux 的 Windows 子系统分发版 Ubuntu 默认 导出 导出到D盘 文件名为ubuntu tar 这里需要等一段时间 wsl export Ub
  • CS安装卸载测试总结

    最近在执行C S控制客户端安装卸载的测试 通过自己的测试经历和网上的资料 总结以下安装卸载测试点 安装测试 1 GUI测试 安装过程中所有的界面显示 提示信息等是否正确 2 兼容性测试 在不同的操作系统 不同配置的主机上能否正常安装 3 安
  • 从 Microsoft Dynamics CRM 4.0 server迁移到 Microsoft Dynamics CRM 2013 Server

    不能就地升级早于 Microsoft Dynamics CRM Server 2011 的版本号 比方 Microsoft Dynamics CRM 4 0 server 可是 能够在升级过程中使用 Microsoft Dynamics C
  • ssd颗粒查看工具_SSD又降价了,但是使用前一定要做这几件事

    前段时间是618大促 各品类产品都开启了促销模式 SSD也是如此 相信不少朋友都买了SSD 来为系统加速 没来得及上车的玩家也不要伤心 根据业界的预测 接下来SSD价格还要走低 第三季度闪存价格又要陷入一个跌价周期 预计下滑5 以内 而第四

随机推荐