当前位置: 首页 > article >正文

git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件?从历史记录中彻底清除彻底删除(本地+远程)

git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件?

覆盖删除:

提交了某个不需要的文件,并push到了远程分支,此时在本地删除该文件,然后再提交一次。

这样的会导致远程仓库的体积不会变小,文件在某一次commit中还可以回溯到。


1、查看文件日志记录:

 git log -- <file>

2、如果只是提交到本地,还没有push到远程仓库:

git checkout -- <file>

3、 删除本地文件及Git记录

git rm <file>

4、从历史记录中彻底清除,例如前两次提交到远程分支了:

git reset HEAD^^^ data/mission.db
git commit --amend
git pull
git push

Git 在项目开发中常用的 50 种高频操作场景,覆盖日常开发、协作和高级用法的核心需求:


一、基础操作

  1. 初始化仓库

    git init
    
  2. 克隆远程仓库

    git clone https://github.com/user/repo.git
    
  3. 查看当前状态

    git status
    
  4. 添加文件到暂存区

    git add file.txt          # 添加单个文件
    git add .                # 添加所有修改
    git add *.js             # 通配符添加
    
  5. 提交修改

    git commit -m "提交说明"
    
  6. 修改最后一次提交

    git commit --amend       # 修改提交信息或追加文件
    

二、分支管理

  1. 查看所有分支

    git branch -a
    
  2. 创建新分支

    git branch feature-login
    
  3. 切换分支

    git checkout main
    git checkout -b feature-payment  # 创建并切换
    
  4. 合并分支

    git checkout main
    git merge feature-login         # 普通合并
    git merge --no-ff feature-login # 保留分支历史
    
  5. 删除分支

    git branch -d feature-old       # 安全删除
    git branch -D feature-broken    # 强制删除未合并分支
    
  6. 解决合并冲突
    手动编辑冲突文件后:

    git add resolved-file.txt
    git commit -m "解决冲突"
    
  7. 变基(Rebase)

    git checkout feature
    git rebase main           # 将 feature 分支变基到 main
    
  8. 交互式变基

    git rebase -i HEAD~3      # 修改最近 3 次提交
    

三、远程协作

  1. 关联远程仓库

    git remote add origin https://github.com/user/repo.git
    
  2. 查看远程仓库

    git remote -v
    
  3. 拉取远程更新

    git pull origin main      # 拉取并合并
    git fetch origin          # 仅获取不合并
    
  4. 推送本地提交

    git push origin main
    
  5. 删除远程分支

    git push origin --delete feature-old
    
  6. 强制推送(慎用)

    git push origin main --force
    
  7. 跟踪远程分支

    git checkout --track origin/dev
    

四、撤销与回退

  1. 撤销工作区修改

    git checkout -- file.txt
    
  2. 撤销暂存区文件

    git reset HEAD file.txt
    
  3. 回退到某次提交

    git reset --hard a1b2c3d  # 丢弃后续所有修改
    git reset --soft a1b2c3d # 保留修改到暂存区
    
  4. 回退单个文件到某版本

    git checkout a1b2c3d -- file.txt
    
  5. 撤销某次提交

    git revert a1b2c3d       # 生成反向提交
    

五、日志与对比

  1. 查看提交历史

    git log
    git log --oneline        # 简洁模式
    git log -p               # 显示差异
    git log --graph          # 图形化分支
    
  2. 查看文件修改历史

    git blame file.txt       # 逐行查看修改者
    git log -p file.txt      # 文件修改记录
    
  3. 对比工作区与暂存区

    git diff
    
  4. 对比暂存区与最新提交

    git diff --cached
    
  5. 对比两次提交

    git diff commit1 commit2
    

六、标签管理

  1. 创建标签

    git tag v1.0.0           # 轻量标签
    git tag -a v1.0.0 -m "Release"  # 附注标签
    
  2. 推送标签到远程

    git push origin --tags
    
  3. 删除标签

    git tag -d v1.0.0
    git push origin :refs/tags/v1.0.0  # 删除远程标签
    

七、忽略文件

  1. 配置 .gitignore

    # 忽略日志文件
    *.log
    # 忽略目录
    /node_modules/
    
  2. 强制添加被忽略的文件

    git add -f secret.txt
    

八、储藏与清理

  1. 临时储藏修改

    git stash
    git stash save "暂存说明"
    
  2. 恢复储藏的修改

    git stash pop        # 恢复并删除储藏
    git stash apply     # 恢复但不删除
    
  3. 清理未跟踪文件

    git clean -fd       # 强制删除未跟踪文件和目录
    

九、高级操作

  1. 子模块管理

    git submodule add https://github.com/user/lib.git
    git submodule update --init --recursive
    
  2. 二分法调试

    git bisect start
    git bisect bad      # 标记当前为错误版本
    git bisect good a1b2c3d  # 标记已知正常版本
    
  3. 重写提交信息

    git rebase -i HEAD~3  # 修改最近 3 次提交信息
    
  4. 拆分提交
    在交互式变基中使用 edit 标记提交,然后:

    git reset HEAD^     # 拆分提交内容
    git add file1.txt
    git commit -m "提交部分修改"
    git add file2.txt
    git commit -m "剩余修改"
    git rebase --continue
    
  5. 生成补丁文件

    git format-patch HEAD~2  # 生成最近 2 次提交的补丁
    
  6. 应用补丁

    git apply patch-file.patch
    

十、协作与工作流

  1. Fork 仓库协作

    # 添加上游仓库
    git remote add upstream https://github.com/original/repo.git
    # 同步上游更新
    git fetch upstream
    git merge upstream/main
    
  2. Pull Request 流程

    git checkout -b feature
    # 开发后推送到自己的远程分支
    git push origin feature
    # 在 GitHub/GitLab 创建 PR
    
  3. 同步他人分支

    git fetch origin
    git checkout -b colleague-feature origin/colleague-feature
    

十一、优化与调试

  1. 减少仓库体积

    git gc --auto       # 清理无用对象
    git repack -ad      # 重新打包对象
    
  2. 查看文件权限变化

    git config core.fileMode false  # 忽略文件权限变化
    

相关文章:

git 如何彻底删除已经提交到远程仓库的文件?而不是覆盖删除?git 如何删除已经提交到本地的文件?从历史记录中彻底清除彻底删除(本地+远程)

git 如何彻底删除已经提交到远程仓库的文件&#xff1f;而不是覆盖删除&#xff1f;git 如何删除已经提交到本地的文件&#xff1f; 覆盖删除&#xff1a; 提交了某个不需要的文件&#xff0c;并push到了远程分支&#xff0c;此时在本地删除该文件&#xff0c;然后再提交一次…...

IP协议之IP,ICMP协议

1.因特网中的主要协议是TCP/IP&#xff0c;Interneet协议也叫TCP/IP协议簇 2.ip地址用点分十进制表示&#xff0c;由32位的二进制表示&#xff0c;两部分组成&#xff1a;网络标识主机标识 3.IP地址分类; A:0.0.0.0-127.255.255.255 B&#xff1a;128.0.0.0-191.255.255.25…...

死锁 手撕死锁检测工具

目录 引言 一.理论联立 1.死锁的概念和原因 2.死锁检测的基本思路 3.有向图在死锁检测中的应用 二.代码实现案例&#xff08;我们会介绍部分重要接口解释&#xff09; 1.我们定义一个线性表来存线程ID和锁ID 2.表中数据的查询接口 3.表中数据的删除接口 4.表中数据的添…...

软考高级-系统架构设计师 案例题-软件架构设计

文章目录 软件架构设计质量属性效用树&#xff0c;质量属性判断必背概念架构风格对比MVC架构J2EE四层结构面向服务架构SOA企业服务总线ESB历年真题【问题1】 &#xff08;12分)【问题2】&#xff08;13分&#xff09; 参考答案历年真题【问题1】&#xff08;12分&#xff09;【…...

JavaScript Date(日期)

JavaScript Date(日期) JavaScript的Date对象是处理日期和时间的一个强大工具。它允许开发者轻松地创建日期对象、格式化日期、计算日期差以及执行各种日期相关的操作。本文将深入探讨JavaScript中的Date对象,包括其创建、格式化、操作以及与其他日期时间的交互。 创建Dat…...

vue+d3js+fastapi实现天气柱状图折线图饼图

说明&#xff1a; vued3jsfastapi实现天气柱状图折线图饼图 效果图&#xff1a; step0:postman 1. 生成天气数据&#xff08;POST请求&#xff09;&#xff1a;URL: http://localhost:8000/generate-data/?year2024&month3&seed42 方法: POST Headers:Content-Type:…...

vue:前端预览 / chrome浏览器设置 / <iframe> 方法预览 doc、pdf / vue-pdf 预览pdf

一、本文目标 <iframe> 方法预览 pdf 、word vue-pdf 预览pdf 二、<iframe> 方法 2.1、iframe 方法预览需要 浏览器 设置为&#xff1a; chrome&#xff1a;设置-隐私设置和安全性-网站设置-更多内容设置-PDF文档 浏览器访问&#xff1a; chrome://settings/co…...

【NLP 56、实践 ⑬ LoRA完成NER任务】

目录 一、数据文件 二、模型配置文件 config.py 三、数据加载文件 loader.py 1.导入文件和类的定义 2.初始化 3.数据加载方法 代码运行流程 4.文本编码 / 解码方法    ① encode_sentence()&#xff1a; ② decode()&#xff1a; 代码运行流程 ③ padding()&#xff1a; 代码…...

Java性能调优2025:从JVM到Kubernetes的全链路优化策略

摘要 &#x1f4dd; 本文将带你深入探讨2025年Java全链路性能调优的最新实践&#xff0c;从JVM底层优化到Kubernetes集群调优&#xff0c;涵盖GC策略选择、JIT优化、容器化最佳实践等核心内容。通过大量实践案例和代码示例&#xff0c;帮助你构建完整的性能优化知识体系。 目…...

【力扣hot100题】(076)买卖股票的最佳时机

终于来到了最考验智商的贪心算法。 之前做过&#xff0c;但花了不少时间思考&#xff0c;所以这次做的很快。 思路就是记录最小价格&#xff0c;然后一路遍历边调整新的最小价格边比较目前价格和最小价格差价。 class Solution { public:int maxProfit(vector<int>&am…...

Java基础 4.9

1.方法递归调用练习 //请使用递归的方式求出斐波那契数1, 1, 2, 3, 5, 8, 13 //给你一个整数n, 求出它的值是多少 /* 思路 n 1 1 n 2 1 n > 3 前两个数的和 递归的思路 */ public class RecursionExercise01 {public static void main(String[] args) {Mathod mathod ne…...

NDK开发:音视频处理基础

音视频处理基础 一、音视频基础 1.1 音视频基本概念 视频编码格式 H.264/AVCH.265/HEVCVP8/VP9AV1音频编码格式 AACMP3PCMOPUS封装格式 MP4FLVMKVTS1.2 音视频处理流程 视频处理流程 采集(Camera/Screen)预处理(美颜/滤镜)编码(H.264/H.265)封装传输/存储音频处理流程 …...

WPF 组件的宽高绑定另一个组件的宽高的指定比值

0.此方法比较适用于响应式界面,组件的大小需要根据窗体大小改变。 1.创建转换函数,并传入比值 public class SizeConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is double d &&…...

c#的form实现叠叠乐游戏

说明&#xff1a; 我希望用c#的form实现叠叠乐的游戏&#xff0c;玩家需要堆叠方块来建造高塔。 效果图&#xff1a; step1:游戏规则 游戏实现步骤&#xff1a; a. 处理事件&#xff0c;玩家可以释放摆动的方块&#xff0c;方块会下落。 b. 更新摆动方块的位移&#xff0c;根…...

k8s 1.23升级1.24

0、简介 这里只用3台服务器来做一个简单的集群&#xff0c;当前版本是1.23.17目标升级到1.24.17 地址主机名192.168.160.40kuber-master-1192.168.160.41kuber-master-2192.168.160.42kuber-node-1 我这里设置的master2可调度pod&#xff0c;将master2的污点去掉 kubectl de…...

Qt中的元对象系统

Qt的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。 元对象系统基于以下三个方面&#xff1a; (1).QObject类&#xff1a;为可以利用元对象系统的对象提供了基类。 (2).Q_OBJECT宏&#xff1a;用于启用元对象功能&#xff0c;…...

qt之opengl使用

使用qt中的openglWidget绘制一个三角形。自定义的类继承关系sunOpengl : public QOpenGLWidget,QOpenGLFunctions_3_3_Core 代码如下 /*----MainWindow.cpp----------------------------------------------*/ #include "mainwindow.h" #include "./ui_mainwin…...

晋城市电子健康证上传照片尺寸要求及手机拍照制作方法

晋城市餐饮从业人员健康证电子照片上传有着明确的技术规范。根据"晋城市从业人员电子健康证明服务平台"要求&#xff0c;照片尺寸应为358像素&#xff08;宽&#xff09;441像素&#xff08;高&#xff09;&#xff0c;这一比例符合标准证件照的规格。照片底色可选择…...

python基础语法11-文件读写

在 Python 中&#xff0c;文件操作是日常编程中的常见任务之一。Python 提供了简单且强大的工具来读取和写入文件。通过使用内置的 open() 函数、read()、readline()、write() 等方法&#xff0c;我们可以轻松实现对文件的操作。此外&#xff0c;Python 的 with 语句可以帮助我…...

js实现跨域下载,展示下载进度以及自定义下载名称功能

一、 下载进度 loading弹窗结构 // loading状态DOM function setLoading() {let content document.querySelector(.loading)content.innerHTML content.innerHTML <div class"loading_content"><div class"contentBox"><div class&quo…...

MCP 实战系列(Day 2)- 动手搓个文件系统 MCP 服务器

上期回顾&#xff1a;MCP 实战系列&#xff08;Day 1&#xff09;- 什么是 MCP&#xff1f; 在上期文章中&#xff0c;我们详细介绍了 Model Context Protocol&#xff08;MCP&#xff09;的基本概念和应用场景。本节将带领大家开发一个简易的 Filesystem MCP Server&#xff…...

LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装

ZMC408CE 高性能总线型运动控制器 ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器&#xff0c;具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口&#xff0c;ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。 ZMC408CE支持PLC、Basic、HMI组态三种编…...

Java接口性能优化面试问题集锦:高频考点与深度解析

1. 如何定位接口性能瓶颈&#xff1f;常用哪些工具&#xff1f; 考察点&#xff1a;性能分析工具的使用与问题定位能力。 核心答案&#xff1a; 工具&#xff1a;Arthas&#xff08;在线诊断&#xff09;、JProfiler&#xff08;内存与CPU分析&#xff09;、VisualVM、Prometh…...

Xilinx虚拟输入/输出(VIO)IP核详细介绍及使用示例

LogiCORE™ IP虚拟输入/输出(VIO)内核是一款可定制化的内核,能够实时监控和驱动FPGA(现场可编程门阵列)内部信号。其输入和输出端口的数量及位宽均可根据需求定制,以便与FPGA设计进行接口对接。由于VIO内核与被监控和/或驱动的设计保持同步,因此应用于您设计中的所有设计…...

Vue3+Vite+TypeScript+Element Plus开发-09.登录成功跳转主页

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由-配置 文章目录 目录 系列文档目…...

网络安全应急响应-启动项和任务计划排查

应急响应-启动项排查 在应急响应排查中&#xff0c;启动项和任务计划是攻击者常用的持久化手段。以下是对Windows和Linux系统的详细排查指南&#xff0c;涵盖基础步骤及扩展注意事项&#xff1a; 一、启动项排查 Windows系统 系统配置&#xff08;msconfig&#xff09; 运行 …...

Linux : 内核中的信号捕捉

目录 一 前言 二 信号捕捉的方法 1.sigaction()​编辑 2. sigaction() 使用 三 可重入函数 四 volatile 关键字 一 前言 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。在Linux: 进程信号初识-CSDN博客 这一篇中已经学习到了一种信号…...

开发效率提升200%——cursor

cursor带来的编程"革命" 高级语言编程转为"自然语言编程"借助cursor&#xff0c;直接超越初级后台开发、超越初级前端开发、超越初级测试、超越初级UI&#xff0c;产研一体linux命令只用学不用记&#xff0c;语言描述就是命令给一个表结构流程提示词&…...

微软庆祝它成立整整50周年

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

SpringBoot 整合 MCP

SpringBoot 整合 MCP MCP MCP 协议主要分为&#xff1a; Client 客户端&#xff08;一般就是指 openai&#xff0c;deepseek 这些大模型&#xff09;Server 服务端&#xff08;也就是我们的业务系统&#xff09;我们要做的就是把我们存量系统配置成 MCP Server 环境 JDK17…...