• git 从存储库中删除敏感数据(删除文件历史)


    1、如果您的历史记录中还没有包含敏感数据的存储库的本地副本,请将存储库克隆到本地计算机。

    git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
    Initialized empty Git repository in /Users/YOUR-FILE-PATH/YOUR-REPOSITORY/.git/
    remote: Counting objects: 1301, done.
    remote: Compressing objects: 100% (769/769), done.
    remote: Total 1301 (delta 724), reused 910 (delta 522)
    Receiving objects: 100% (1301/1301), 164.39 KiB, done.
    Resolving deltas: 100% (724/724), done.

    2、切换到存储库的工作目录,克隆完成后库的根目录。

    cd YOUR-REPOSITORY

    3、运行以下命令,替换为要删除的文件PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA路径,而不仅仅是文件名这些论点将:

    • 强制Git处理,但不检查每个分支和标记的整个历史记录
    • 删除指定的文件,以及作为结果生成的任何空提交
    • 覆盖现有标签,重写历史
    git filter-branch --force --index-filter 
    'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' 
    --prune-empty --tag-name-filter cat -- --all
    Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266)
    Ref 'refs/heads/master' was rewritten
    Ref 'refs/remotes/origin/master' was rewritten
    WARNING: Ref 'refs/remotes/origin/master' is unchanged

    4、添加包含敏感数据的文件,.gitignore 以确保您不会意外地再次提交它。 

    echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
    git add .gitignore
    git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"
    [master 051452f] Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore
     1 files changed, 1 insertions(+), 0 deletions(-)

    5、仔细检查您是否从存储库的历史记录中删除了所需的所有内容,并检查了所有分支机构。

    6、一旦您对存储库的状态感到满意,强制推送您的本地更改以覆盖您的GitHub存储库,以及您推送的所有分支:

    git push origin --force --all
    Counting objects: 1074, done.
    Delta compression using 2 threads.
    Compressing objects: 100% (677/677), done.
    Writing objects: 100% (1058/1058), 148.85 KiB, done.
    Total 1058 (delta 590), reused 602 (delta 378)
    To https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git
     + 48dc599...051452f master -> master (forced update)

    7、要从标记版本中删除敏感文件,您还需要强制推送Git标记:

    git push origin --force --tags
    Counting objects: 321, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (166/166), done.
    Writing objects: 100% (321/321), 331.74 KiB | 0 bytes/s, done.
    Total 321 (delta 124), reused 269 (delta 108)
    To https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git
     + 48dc599...051452f master -> master (forced update)

    8、经过一段时间后,您确信 git filter-branch 没有意外的副作用,您可以使用以下命令(使用Git 1.8.5或更高版本)强制取消引用本地存储库中的所有对象并进行垃圾回收:

    git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
    git reflog expire --expire=now --all
    git gc --prune=now
    Counting objects: 2437, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (1378/1378), done.
    Writing objects: 100% (2437/2437), done.
    Total 2437 (delta 1461), reused 1802 (delta 1048)

    9、执行完成后会删除你的操作的数据文件

    相关文章:Removing sensitive data from a repository

                彻底清除Github上某个文件的历史(针对误上传密码文件等情况)

  • 相关阅读:
    [HNOI2016]序列
    [Cqoi2015] 编号 【逆向思维,暴力枚举】
    [NOI2015] 软件包管理器【树链剖分+线段树区间覆盖】
    [Hdu-6053] TrickGCD[容斥,前缀和]
    [Hdu-5155] Harry And Magic Box[思维题+容斥,计数Dp]
    牛客NOIP暑期七天营-提高组6
    [SHOI2007] 书柜的尺寸 思维题+Dp+空间优化
    [UVA12235] Help Bubu 思维题+状态定义+Dp
    牛客NOIP暑期七天营-TG3 赛后题解
    牛客NOIP暑期七天营-TG1 赛后题解
  • 原文地址:https://www.cnblogs.com/xuey/p/10201560.html
Copyright © 2020-2023  润新知