Git: 移除敏感資料 [刪除資料(檔案)](瘦身 指令/命令)

Git: 移除敏感資料 [刪除資料(檔案)](瘦身 指令/命令)

Git: 移除敏感資料 [刪除資料(檔案)](瘦身 指令/命令)


資料來源:http://note.drx.tw/2014/01/git-remove-sensitive-data.html


1. 從 remote repository 複製 Git 專案。

$ git clone https://githuIb.com/chusiang/tuxENV.git [Enter]


2. 切換至該專案目錄。

$ cd tuxENV [Enter]


3. 從所有提交 (commit) 中刪除檔案 (pkg/*.deb 請自行修正)。

$ git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch pkg/*.deb' \
--prune-empty --tag-name-filter cat -- --all [Enter]


4. 清除快取和回收空間。

$ rm -rf .git/refs/original/ [Enter]
$ git reflog expire --expire=now --all [Enter]
$ git gc --prune=now [Enter]
$ git gc --aggressive --prune=now [Enter]


5. 強制覆寫並上傳至 remote repository。

$ git push origin master --force [Enter]


6. 打完收工!現在我們可以有效的幫 repository 瘦身了。

$ du -sh [Enter]

4 thoughts on “Git: 移除敏感資料 [刪除資料(檔案)](瘦身 指令/命令)

  1. 彻底删除git中没用的大文件 (徹底 刪除 檔案 GIT)

    資料來源:https://www.jianshu.com/p/780161d32c8e

    $git filter-branch –force –prune-empty –index-filter ‘git rm -rf –cached –ignore-unmatch XXX.framework’ –tag-name-filter cat — –all

    $git push –force –all

    具体到我这儿,因为我添加了 XXX.framework的库,所以命令就是:

    各个参数的意思摘抄如下
    filter-branch 是让git重写每一个分支,
    –force 假如遇到冲突也让git强制执行,
    –index-filter 选项指定重写的时候应该执行什么命令,要执行的命令紧跟在它的后面,在这里就是git rm –cached –ignore-unmatch password.txt ,让git删除掉缓存的文件,如果有匹配的话。
    –prune-empty 选项告诉git,如果因为重写导致某些commit变成了空(比如修改的文件全部被删除),那么忽略掉这个commit。
    –tag-name-filter 表示对每一个tag如何重命名,重命名的命令紧跟在后面,当前的tag名会从标注输入送给后面的命令,用cat就表示保持tag名不变。
    紧跟着的– 表示分割符,
    最后的–all 表示对所有的文件都考虑在内。
    等命令执行完了,要提交到远程

  2. Git如何永久删除文件(包括历史记录) (徹底 刪除 GIT 檔案 歷史)

    資料來源:http://www.cnblogs.com/shines77/p/3460274.html

    #刪檔案
    $ git filter-branch –force –index-filter ‘git rm –cached –ignore-unmatch path-to-your-remove-file’ –prune-empty –tag-name-filter cat — –all

    #上傳
    $ git push origin master –force –all
    $ git push origin master –force –tags

    #清空垃圾桶
    $ rm -rf .git/refs/original/
    $ git reflog expire –expire=now –all
    $ git gc –prune=now

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

    資料來源: https://blog.csdn.net/ysy950803/article/details/53383582

    $git filter-branch –force –index-filter ‘git rm –cached –ignore-unmatch FILE_PATH’ –prune-empty –tag-name-filter cat — –all

    $git push origin master –force

    $rm -rf .git/refs/original/

    $git reflog expire –expire=now –all

    $git gc –prune=now

    $git gc –aggressive –prune=now

    #(注意上面的FILE_PATH要是路径而不只是文件名字, 例如 src/main/java/com/ysy/demo/filename.java)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *