如何去除git历史中的敏感信息

1 篇文章 0 订阅
1 篇文章 0 订阅

前言

当日常代码提交时,不小心把敏感信息提交上去后,再进行删除操作,虽然文件在代码中已删除,但还是可通过提交历史查看到敏感信息。

背景

例如在历史很久之前的某一次提交中,把敏感信息(账号密码等)提交上去。
在这里插入图片描述

发现后立马修改源代码,将里边的敏感信息删除,删除后查看该文件历史操作记录,包含敏感信息历史commit仍存在,点击还是可查看到敏感信息。
在这里插入图片描述

为了不让敏感信息泄露,可通过以下方法清除隐患。

方法

1. 删除指定文件或目录,提交
git filter-branch --tree-filter 'rm -rf src/Info' HEAD
2. 强制覆盖
git push -f

在这里插入图片描述

如果push失败,前往git库->settings->protected Branches修改,去除保护,再重新执行第二步操作。(去除成功后,务必记得修改回来)

3. 去除成功

执行完以上两步操作,不管是代码还是历史操作记录,src/Info 目录下的敏感信息,将无法再获取到。
在这里插入图片描述

总结

当敏感信息不小心提交到远程,如果只是单纯的文件删除操作,还是可通过历史操作记录查看,很容易产生安全隐患,落入不法分子,后果将不堪设想。通过以上方法,能彻底将敏感信息相关的信息记录删除,有效的解决安全问题。

该方法仅限用于,从git 历史中完全删除某个文件或文件夹,如果敏感信息在某个文件中,是否无法对文件内容进行修改的。

特别说明:当使用git push -f 强制推送修改后,如有其他协作人,需要重新 clone 代码,否则在进行代码推送时会出现问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下命令来去除多余的 git merge 信息: ``` git log --merges --first-parent --pretty=format:"%h - %s" --grep=^Merge ``` 这个命令会列出所有的 merge commit,并只显示第一个 parent 的信息。如果你想删除某些 merge commit,可以使用 `git rebase -i` 命令进行交互式 rebase,然后选择要删除的 commit。请注意,在进行此操作之前,请确保已创建备份或者已将代码提交到远程仓库。 ### 回答2: 要去除多余的git merge信息,可以使用以下命令: 1. git log --oneline:这个命令可以列出所有的git commit历史记录,并且每一条记录只显示一行信息。通过这个命令,我们可以查看每个commit的hash值,以便后续使用。 2. git rebase -i [commit]:使用这个命令可以进入交互式的rebase模式,[commit]是要删除merge信息的commit的hash值。在交互式rebase模式,你可以修改每个commit的操作,包括删除、编辑和合并等。 3. 在rebase模式,找到你想要删除merge信息的commit,将其操作改为"edit"。保存并关闭编辑器。 4. git reset HEAD^:使用这个命令可以回退到上一个commit,也就是要删除merge信息的那个commit。 5. git commit --amend:使用这个命令来修改commit的信息。在这里,你可以删除或修改merge信息,然后保存修改并关闭编辑器。 6. git rebase --continue:使用这个命令继续rebase操作,它会将之前修改的commit重新应用到代码库。 7. 重复第4到第6步直到所有需要修改的commit都被修改。 8. git push origin [branch]:最后,使用这个命令将修改后的commit推送到远程代码库。 这样,多余的git merge信息就被成功删除了。需要注意的是,修改commit会改变commit的hash值,所以在修改之后,最好不要推送、分享或引用修改前的commit。 ### 回答3: 要去除多余的git merge信息,可以使用以下命令: 1. git log命令:可以查看所有提交历史记录,包括merge信息。可以通过以下参数来筛选和查看相关的提交记录: ``` git log --merges ``` 这样可以只显示merge提交记录,然后记录下需要删除的merge信息的hash值。 2. git rebase命令:通过rebase命令,可以修改提交历史记录,删除不必要的merge信息。通过以下步骤来实现: - 执行以下命令,将当前分支与目标分支进行rebase操作,即将当前分支上的提交应用到目标分支上: ``` git rebase <目标分支> ``` - 如果在rebase过程遇到冲突,需要手动解决冲突,并使用以下命令继续rebase过程: ``` git rebase --continue ``` - 当rebase完成后,不再需要的merge信息将被过滤掉。 3. git push命令:如果已经将多余的merge信息推送到远程仓库,需要使用强制推送来删除相关的远程分支。使用以下命令: ``` git push -f origin <分支名> ``` 请注意,强制推送会修改远程仓库的提交历史,可能会影响其他开发人员的工作,请在操作前确保与团队成员进行充分的沟通和协商。 使用以上方法,可以去除多余的git merge信息,并保持提交历史的整洁和清晰。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值