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: 移除敏感資料 [刪除資料(檔案)](瘦身 指令/命令)”
彻底删除 Git 仓库中的文件避免占用大量磁盘空间(徹底刪除)
資料來源: https://blog.walterlv.com/git/2017/09/18/delete-a-file-from-whole-git-history.html
$ git filter-branch –force –index-filter ‘git rm –cached –ignore-unmatch path-to-your-remove-file’ –prune-empty –tag-name-filter cat — –all
path-to-your-remove-file: 你的目標
彻底删除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 表示对所有的文件都考虑在内。
等命令执行完了,要提交到远程
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
彻底清除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)