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

上海市嘉定建设局网站基金公司网站建设方案

上海市嘉定建设局网站,基金公司网站建设方案,电商电商网站建设,企业模板网站vue删除git敏感 如果你现在遇到了这个场景,在github 上不小心 上传了私钥操作 同时新版本 已经领先于之前的版本了 输入git log 如下&#xff1a; 这是我的模拟场景 commit 0ed3d55db1799649988307649de84a (HEAD -> main, origin/main, origin/HEAD) Author: jacinli <…

删除git敏感

如果你现在遇到了这个场景,在github 上不小心 上传了私钥操作

同时新版本 已经领先于之前的版本了

输入git log 如下:

这是我的模拟场景

commit 0ed3d55db1799649988307649de84a (HEAD -> main, origin/main, origin/HEAD)
Author: jacinli <x@x.com>
Date:   Tue Mar 25 23:29:02 2025 +0800testcommit ec8ce5a6647f1c9ee17cf19ed
Author: jacinli <x@x.com>
Date:   Tue Mar 25 23:28:40 2025 +0800Add .env.dev file for development environment configuration with test secret

✅ 你的目标是:

彻底从 Git 历史中清除敏感内容(如私钥)

保留当前的提交记录(不丢 0ed3d55)

推送到 GitHub 覆盖远程历史

✅ 1. 安装 Git Filter Repo(推荐)

brew install git-filter-repo  # macOS
# or
pip install git-filter-repo  # 跨平台

✅ 2. 备份当前分支,防止误操作!

git branch backup-main

✅ 3. 使用 git-filter-repo 清除敏感文件 [注意备份】

git filter-repo --force --path .env.dev --invert-paths

⚠️ 注意:该命令会修改你的整个 Git 历史!如果你误操作,当前目录无法恢复!请先备份!

确实会导致 本地仓库和远程仓库之间的关联信息被清除掉,原因如下:

🧠 为什么远程信息会丢失?

git filter-repo 本质上是重写历史,它会:

移除 Git 的 .git/config 中的 remote 配置

抹除 reflog 和旧 commit

相当于初始化了一个新的 repo 结构(尽管你还在旧目录里)

1. 重新添加远程仓库

git remote add origin git@github.com:your-username/your-repo.git
# 或者如果你用 https
# git remote add origin https://github.com/your-username/your-repo.git

让本地追踪远程main:

git branch --set-upstream-to=origin/main main

永久性地从历史中

删除这个文件

先看一下当前的远程地址:

git remote -v

如果输出为空,说明确实没有 remote。

✅ 解决办法:重新绑定远程仓库并设置追踪分支 [见上面的处理】

# 1. 添加远程仓库(如果还没添加)
git remote add origin git@github.com:your-name/your-repo.git  # 替换成你自己的仓库地址# 2. 设置 main 分支追踪远程 origin/main 分支
git branch --set-upstream-to=origin/main main# 3. 推送并强制覆盖远程历史(⚠️慎用)
git push origin main --force

✅ 4. 强制推送(会覆盖远程历史)

git push origin main --force

恢复操作

在上面结束后,不可以直接merge了,因为commit历史不一样了

解决办法如下: 更改名称+更换远程分支为None,然后checkout对应的分支,接着对着之前的文件合并自己的stash信息操作,如果不小心删除了自己的一个分支,恢复如下:

✅ 步骤一:查看 Git 的操作日志(reflog)

git reflog

日志:

9b447a7 HEAD@{1}: Branch: renamed refs/heads/dev to refs/heads/dev1
9f58874 (HEAD -> dev) HEAD@{0}: checkout: moving from dev1 to dev

恢复分支:

git checkout -b dev1 9b447a7

为什么不删除hash值?

Git 是一个基于有向无环图(DAG)的内容寻址版本控制系统,不能直接“删掉某个 hash 对应的 commit”,因为那会破坏整个历史链条。

🧠 更详细解释:

1. Git 的核心是不可变的对象(内容寻址)

• Git 的每个提交(commit)都是一个对象。

• 它包含:

• 当前代码快照的指针(tree)

• 父提交(parent hash)

• 提交信息

• 作者信息

• hash 是根据内容生成的,一旦生成,就不可更改,也不可直接“删除”一个中间 commit,否则后面所有 commit 都会“失联”。

2. 中间提交不能随便删:因它被后面的 commit 引用了

假如你强行删除一个 commit:

git cat-file -t <commit_hash>  # 确认类型是 commit

你无法从 Git 的内部对象数据库中直接删掉这个 commit:

因为:
• 后续提交依赖它
• Git 的对象之间是通过 hash 引用的
• 删除一个 commit 之后,它的“子孙”都会失效

3. 正确方式是“重写历史”

git filter-repo --path .env.dev --invert-paths

Git 的哲学:

历史是不可变的

❌ Git 不允许你直接删除某个 hash(commit),因为它是整个历史链的节点;

✅ 正确方式是用工具“重写历史”,然后强推。

使用Revert

Git 中的 revert 命令的设计目的,是:

不破坏历史、但能“撤回”某次提交的内容。

换句话说:

• revert 不删除旧的 commit;

• 它是创建一个新的 commit,这个 commit 的内容是“反操作”;

• 你可以想象为:“加了一个反向 patch”。

A - B - C - D  ← 现在 HEAD 在 D

执行:

git revert C

Git 会生成一个新的 commit(比如 E):

A - B - C - D - E

这个 E 是“把 C 做的内容撤销”的补丁,但 C 本身 仍然存在

❓那为啥不直接删除 C?

因为 删除 C 就会影响整个历史链条

• 如果你硬删了 C,那么 D 也会失效(因为它是基于 C 的快照);

• 这就破坏了历史的完整性;

• Git 的设计理念是:

不可篡改的 commit 历史,是协作安全的基础。

🔍 revert vs reset vs rebase vs filter-repo

命令作用是否保留历史是否安全协作
revert生成一个“反向补丁”✅ 是✅ 是
reset改变当前分支指向❌ 否⚠️ 会影响别人
rebase重写提交历史❌ 否⚠️ 要小心共享分支
filter-repo深度修改整个历史❌ 否⚠️ 仅在重写整个仓库历史时使用

git revert 的存在,是为了

“在不破坏历史的前提下撤销某次提交的内容”

http://www.dtcms.com/wzjs/571328.html

相关文章:

  • 淘宝客户自己做网站怎么做新网站如何做百度百科
  • 在线做简历的网站wordpress使用七牛图像服务
  • 做电力 公司网站做网站建设费用预算
  • 网站外包如何报价免费样机素材网站
  • 电子产品网站建设策划方案php可以自己做网站吗
  • 联通公司网站谁做的长春网站排名优化
  • wordpress 哪些网站吗呼市网站制作
  • 申请网站建设费大连 响应式网站
  • 做网站需要的技术 规范抚州市建设局网站查询
  • 网页模板下载网站10wordpress 修改小工具样式
  • 中国建设网官方网站平台wordpress 内容字段
  • 公司如何做网站建设四川水利工程造价信息网
  • 大型网站建设规范做一下网站收购废钢
  • 长春市住房建设局网站外贸网站能用阿里云吗
  • 在哪里能建免费的网站网站外链建设原则
  • 个人网站做电影网站360网站建设的目标是什么
  • 网站突然显示 建设中推广专员
  • 做网站需要多大的空间网站如何改首页模块
  • 个人网站备案介绍seo顾问什么职位
  • 网页搜索的东西别人能知道吗网站优化推广 视屏
  • 企业宣传网站建设图示网站建设开发公司
  • 音乐网站如何建设的如何做网站相册
  • 技术支持 东莞网站建设防水工程湛江专业的建站软件
  • 外国语学院英文网站建设什么软件可以做动画视频网站
  • 灵犀科技 高端网站建设常见的制作网站的工具
  • 怎样做自己的网站软件商店推荐
  • 桂林网站网站建设福建省建筑信息平台
  • 网站设计要如何做支付功能网站建设新媒体运营
  • 如何做网站搭建api接口网站对接qq群 虚拟主机
  • 360做企业网站多少钱做视频解析网站要什么服务器