我的问题:
在设置存储库的早期,错误被导致将当时的所有图像写入存储库.这在gitignore文件中很快得到纠正,不再出现问题.
现在问题是我们有一个庞大的存储库,其中包含图像的历史记录.这在本地克隆存储库时会出现问题,因为它比提示中的干净克隆需要更长的时间.
我的问题:
有没有办法删除包含永远不需要的图像的历史部分?
如果我无法删除,我可以以任何方式压缩甚至清理历史记录吗?
我在 git repo 中有一个文件,它包含敏感信息。我已在最新提交中删除了此信息。现在我想从 git 存储库中删除此文件的所有先前版本。如何才能做到这一点?
我相信它可以用 git-filter-branch 来完成,但我还没有遇到一个可以让我理解的例子。
几天前,我读到了有关 Github 隐私基础知识的文章,其中说提交者的电子邮件可以通过简单的 Github API 请求查看。
我设置了电子邮件别名,但我想更改过去提交的电子邮件。尝试使用此站点和 .gitconfig 的别名
change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3;
echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";
read OK;
if [ \"$OK\" = 'Y' ] ;
then shift 3;
git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ];
then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;};f "
Run Code Online (Sandbox Code Playgroud)
之后,当我输入时,git log每次提交都有新邮件,但在 API 调用https://api.github.com/users/(usuername)/events/public之后,我会同时看到旧电子邮件和新电子邮件
重要的是不要将密码和秘密存储在代码存储库中。
有时,我们在开发应用程序时会硬编码 API 密码。我们通常通过将其转换为我们设置的环境变量export(Unix)来删除它。显然,更好的做法是从一开始就使用环境变量。
但是,如果我们不那么小心并且提交了导致密码暴露的更改,会发生什么情况。
第一步是快速删除它们并提交并推动更改。
好的
但...
密码仍然在 git 历史记录中,因此任何有权访问 git 存储库的人都可以获得密码。不好。
但...
然后,我们执行 git 交互式变基并删除(而不是压缩)有问题的提交 = 在历史记录中添加了密码的提交。
这会解决问题并确保密码在 git 中不再以任何方式可用吗?
当我拉出此提交时,这将如何影响代码。如果除了带有密码的行之外还有其他代码,我可能需要重做那些会丢失的更改。如果提交是很多年前的事情,那么如果此后的任何提交也更改了同一行,我可以想象会出现问题。但愿不会。
我可能在多个提交中的多个分支上有敏感的密钥信息.我很蠢.当我第一次学习aws并用雾和载波进行设置时,我甚至没有想到我的秘密密钥每次提交都会发布到github.甚至在我尝试将文件添加到gitignore之后.问题是,如何撤消发布此信息的许多提交并实现像figaro这样的gem来保持github的信息秘密?我几乎要删除我的回购...
我在 Gitlab 上有一个存储库,其中一个分支上有一些提交,如下所示
A - B - C - D - HEAD
Run Code Online (Sandbox Code Playgroud)
我错误地在提交 B 上上传了一些秘密令牌字符串,后来我注意到了,所以我从 A 创建了一个新分支,然后手动复制了提交 D 中的所有文件,所以历史记录现在看起来像这样
/ - E - HEAD
A - B - C - D
Run Code Online (Sandbox Code Playgroud)
现在我所做的是在 Gitlab 上删除分支 BCD,这样那些“令牌提交”就不再可访问,历史记录看起来像
A - E - HEAD
Run Code Online (Sandbox Code Playgroud)
然而,我只是注意到我仍然可以通过项目 - >活动访问麻烦的提交,并看到我的旧推送,其中旧提交仍然可以访问。
怎样才能彻底删除那些呢?
在构建项目时,我使用了私有仓库并为了更快地测试,我使用了数据库和其他凭据作为代码中的变量。
现在项目依赖于 env。变量,所以回购中没有秘密的东西。我想把它公之于众。
我不希望人们看到提交历史记录中包含这些凭据的部分。
是否可以删除这些行或将所有提交历史设为私有?
我不小心在我的 GitHub 存储库中提交了我的凭据。
我必须从这里删除此凭据(AWS_ACCESS_KEY_ID,秘密访问),否则我的帐户将被暂停。我现在已经从我的帐户中删除了凭证,但它在之前的提交中公开了。
因此,作为 Django 的新手,我不小心将我的密钥提交到了我网站的私有存储库中。考虑到我打算将此网站用于商业目的,我想确保它尽可能安全。我需要生成一个全新的 Django Key 吗?或者我可以只编辑密钥的 10 个字符,将编辑后的密钥添加到我的 .env 文件中,将 .env 添加到我的 .gitignore 文件中,然后就到此为止了吗?
我认识到这不是最好的方法。我很可能会完全生成一个新的密钥,但我认为这可能是一个有效的快速解决方案。
我认为通过这种方式,新的密钥仍然是随机生成的,旧的密钥仍然可以在 github 上找到,但对于任何碰巧抓取它的人来说都是无用的。
仅供参考,我正在使用 python-de Couple 和 .env 文件,这是我保存所有秘密变量(aws 信息、秘密密钥、数据库信息等)的地方。我有单独的设置文件(production.py、development.py、common_settings.py),其中 production.py 和development.py 都从 common_settings.py 导入所有数据。我只是碰巧忘记在第一次提交之前删除原始的 settings.py 文件。
我创建了一个软件并将一些信息保存在文件中。我将所有内容推送到 github,在 9 次提交后,我看到该文件也被推送到 github。我更改了 .gitignore,以便不再推送该文件。
现在的问题是,信息可以在前 10 次提交中看到......
我可以以某种方式删除前 10 个提交而不删除其他任何内容吗?(这样我的第 11 次提交将是第一个。我已经有更多提交了)
git ×9
github ×3
secret-key ×2
django ×1
figaro-ruby ×1
gitlab ×1
passwords ×1
privacy ×1
python-3.x ×1
security ×1