问题描述
我不知道如何处理密钥。
我在 GitHub 上发布了一个带有密钥的存储库(我现在知道了,大不行),然后在设置中发现了 GitHub 密钥并将密钥存储在那里。
那么,两个问题:
- 清除提交历史以便密钥不再可用的最佳方法是什么?
- 我实际上如何访问此密钥?在我的 settings.py 中,我现在有
use vCard::AddressBook; my $address_book = vCard::AddressBook->new(); my $vcard = $address_book->add_vcard; $vcard->given_names(['John']); $vcard->family_names(['Doe']); $vcard->categories(['Cat_01']); ## DOES NOT WORK my $file = $address_book->as_file('file.vcf');
,但会抛出Can't locate object method "categories" via package "vCard" at tmp2.pl line 6.
。
感谢任何帮助,谢谢。
更新
好的,所以根据@VonC 提供的链接,我需要在 SECRET_KEY = 'name_of_key_on_github'
目录中创建一个 .yml 文件。
general.yml
NameError: not defined
settings.py
.github/workflows
项目结构如果你想/需要复制:
name: key #needed but name can be arbitrary
on: [push,pull_request,deployment]
env:
runs-on: ubuntu-latest
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.name_of_my_key }}
credentials: #these don't work yet,if anyone can tell me why?
username: ${{ github.actor }}
password: ${{ secrets.ghcr_token }}
我可以运行 SECRET_KEY = "../.github/general.yml"
,但在推送到远程时出现以下错误:
myrepo
├── app_name
│ ├── settings.py
├── .github
│ ├── workflows
│ │ ├── general.yml
更新 2
未启用工作流范围(github.com > 配置文件 > 设置 > 开发人员设置 > 个人访问令牌):
您需要确保选中复选框。
解决方法
使用 new git filter-repo
,即 does replace the old git filter-branch
or BFG。
它具有 many usage examples,包括基于内容的过滤,以便您在过去的提交中远程访问 path/to/secret
文件:
要保留除这些路径之外的所有文件,只需添加 --invert-paths
:
git filter-repo --path path/to/secret --invert-paths
您可以在实际更改存储库之前添加 --dry-run
以对其进行测试。
然后 git push --force
(这确实会重写您存储库的历史记录,因此请务必通知任何其他合作者)
因为它必须在一个新的克隆上完成:
- 不要对当前的克隆文件夹进行任何操作
- 创建一个单独的存储库克隆,在其中执行过滤器存储库
- 在现在清理的第二个克隆中(其历史记录中不再有大文件),从您的第一个存储库导入您的工作
也就是说,对于第 3 点:
cd /path/to/second/clone
git --work-tree=/path/to/first/original/clone add .
git commit -m "Import work from first clone"
git push --force
关于 git gilter-repo,请参阅“Removing sensitive files from git from Boopathi Rajaa”中的完整示例。
您可以存储加密密钥,但可用于 GitHub Actions only。
在 GitHub 操作之外,请参阅 Github,secret keys and other local settings 中的 Paul Smits。
为此,您需要一个凭据 (PAT) with workflow scope。