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

news2025/4/18 15:21:05

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  # 忽略文件权限变化
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

死锁 手撕死锁检测工具

目录 引言 一.理论联立 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;【…

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; 代码…

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

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

c#的form实现叠叠乐游戏

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

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;这一比例符合标准证件照的规格。照片底色可选择…

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组态三种编…

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

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

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

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

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…

【详细】MySQL 8 安装解压即用 (包含MySQL 5 卸载)

卸载MySQL 1.卸载 2.安装目录删除残余文件&#xff08;当初安装的位置&#xff09; 3.删除programData下面的mysql数据文件 4.检查mysql服务是否存在&#xff0c;如果存在则删除&#xff08;先暂停mysql服务&#xff09; sc delete mysql 5.删除注册表中残留信息 安装MySQL 8&…