从 github 和历史记录中删除文件
Remove file from github and history
我知道之前有人问过这个问题,但我仍然对我需要采取的确切步骤感到困惑。
几个月前,我在 github 上的 public 存储库(我拥有)中提交了一个包含敏感信息的文件。我现在必须连同它的任何痕迹一起删除这个文件。
具体来说,它是一个包含一些数据库详细信息的 web.config
文件。我需要删除连接字符串,但我很乐意删除整个文件并在需要时将其添加回去。
此后有很多提交。
我查看了 BFG,这听起来像是完成这项工作的正确工具,但这并没有奏效 - 可能是我犯了一个错误。
步数:
git clone --mirror git://example.com/my-repo.git
bfg-1.12.15.jar --delete-files web.config my-repo.git
cd my-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
输出:
Counting objects: 1064, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (1058/1058), done.
Writing objects: 100% (1064/1064), done.
Total 1064 (delta 775), reused 289 (delta 0)
Everything up-to-date
文件仍然存在,我究竟需要做什么才能从存储库中删除这个 web.config
文件?
更新
好的,所以建议删除 web.config 然后重新 运行 命令:
rm web.config
git commit -am "removed web config"
git push
然后我重新运行上面的所有命令,我得到:
Using repo : xxx.git
Found 246 objects to protect
Found 2 commit-pointing refs : HEAD, refs/heads/master
Protected commits
-----------------
These are your protected commits, and so their contents will NOT be altered:
* commit 1f4ad898 (protected by 'HEAD')
Cleaning
--------
Found 114 commits
Cleaning commits: 100% (114/114)
Cleaning commits completed in 93 ms.
BFG aborting: No refs to update - no dirty commits found??
更新 2
原来 BFG 工作正常,我不小心输入了 web.config
小写而不是实际的 Web.config
。不管怎样,它解决了我的问题:)
cd 到目录,
git rm web.config
ls 检查 "web.config" 是否被删除
git status
you may need to pull update from repo
您描述的步骤似乎是使用 BFG 工具的正确方法(根据他们的文档)。
请注意,BFG Repo Cleaner 只会影响您的存储库的历史记录,不会触及您的提交历史记录中的最新提交。换句话说,你的分支的尖端需要先清理,然后是 BFG 工具 运行。
根据您当前的状态,首先使用 或 git rm web.config
清理事物的当前状态,提交您的更改,推送所有内容,然后 运行 BFG 清理历史记录.
我知道之前有人问过这个问题,但我仍然对我需要采取的确切步骤感到困惑。
几个月前,我在 github 上的 public 存储库(我拥有)中提交了一个包含敏感信息的文件。我现在必须连同它的任何痕迹一起删除这个文件。
具体来说,它是一个包含一些数据库详细信息的 web.config
文件。我需要删除连接字符串,但我很乐意删除整个文件并在需要时将其添加回去。
此后有很多提交。
我查看了 BFG,这听起来像是完成这项工作的正确工具,但这并没有奏效 - 可能是我犯了一个错误。
步数:
git clone --mirror git://example.com/my-repo.git
bfg-1.12.15.jar --delete-files web.config my-repo.git
cd my-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
输出:
Counting objects: 1064, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (1058/1058), done.
Writing objects: 100% (1064/1064), done.
Total 1064 (delta 775), reused 289 (delta 0)
Everything up-to-date
文件仍然存在,我究竟需要做什么才能从存储库中删除这个 web.config
文件?
更新
好的,所以建议删除 web.config 然后重新 运行 命令:
rm web.config
git commit -am "removed web config"
git push
然后我重新运行上面的所有命令,我得到:
Using repo : xxx.git
Found 246 objects to protect
Found 2 commit-pointing refs : HEAD, refs/heads/master
Protected commits
-----------------
These are your protected commits, and so their contents will NOT be altered:
* commit 1f4ad898 (protected by 'HEAD')
Cleaning
--------
Found 114 commits
Cleaning commits: 100% (114/114)
Cleaning commits completed in 93 ms.
BFG aborting: No refs to update - no dirty commits found??
更新 2
原来 BFG 工作正常,我不小心输入了 web.config
小写而不是实际的 Web.config
。不管怎样,它解决了我的问题:)
cd 到目录,
git rm web.config
ls 检查 "web.config" 是否被删除
git status
you may need to pull update from repo
您描述的步骤似乎是使用 BFG 工具的正确方法(根据他们的文档)。
请注意,BFG Repo Cleaner 只会影响您的存储库的历史记录,不会触及您的提交历史记录中的最新提交。换句话说,你的分支的尖端需要先清理,然后是 BFG 工具 运行。
根据您当前的状态,首先使用 或 git rm web.config
清理事物的当前状态,提交您的更改,推送所有内容,然后 运行 BFG 清理历史记录.