写点什么

公司敏感数据被上传 Github,吓得我赶紧改提交记录

作者:程序员小富
  • 2023-12-08
    北京
  • 本文字数:2083 字

    阅读完需:约 7 分钟

大家好,我是小富~


说个事吧!最近公司发生了一个事故,有同事不小心把敏感数据上传到了 GitHub 上,结果被安全部门扫描出来了。这件事导致公司对所有员工进行了一次数据安全的培训。对于这个事我相信,有点工作经验的人都不会故意去上传这些敏感文件,多数应该是误操作导致的。


这个事件也给了提了个醒,我平时会写博客用 GitHub 比较多,吓得我赶紧对自己所有的 GitHub 仓库进行了排查,庆幸没有提交过敏感信息的记录。但我注意到在过往的提交记录中,有使用公司的 Git 账号信息提交过代码,TMD 这就很难受了。



避免后续产生不必要的麻烦,我决定修改一下提交记录中涉及公司的信息。


注意:以下操作只限于用在自己的 Git 仓库,别在公司的项目里秀,切记!

设置用户信息

Git 进行版本控制的时候,每次的代码提交记录中都包含用户的用户名和邮箱,这些信息在你进行每一次提交时都会被记录下来。我们保不齐会错误地使用了错误的信息,或者需要改用另一个邮箱地址。那这种情况,我们就需要更改我们提交记录中的用户名和邮箱。


可以通过全局设置或者特定仓库设置两种方式来修改我们提交时的用户信息。

全局

全局设置可以影响所有的代码提交。如果你在全局范围内设置了用户名和邮箱后,除非你在特定的项目中覆盖这个设置,否则这个设置会作为默认设置应用于所有的提交。


git config --global user.name "程序员小富"git config --global user.email "邮箱信息"
复制代码


你可以通过如下的命令来查看 Git 的全局配置:


git config --global -l
复制代码

特定仓库

如果你只想修改某个特定仓库的用户信息,可以在特定仓库的根目录下进行如下操作,Git 会将设置得用户名和邮箱仅应用于当前仓库。


git config user.name "程序员小富"git config user.email "邮箱信息"
复制代码

篡改提交记录

单条修改

Git 提供了amend命令,可以用来修改最新的提交记录。注意,这个命令只会修改最近一次的提交,它能实现以下的功能:


  • 修改提交信息

  • 添加漏掉的文件到上一次的提交中

  • 修改之前提交的文件

用法

它的使用方法比较简单,直接替换用户名、邮箱信息,或者如果已经修改了仓库的用户信息,直接执行命令重置。


# 替换用户名、邮箱信息git commit --amend --author="{username} <{email}>" --no-edit
# 如果已经修改了仓库的用户信息,直接执行命令重置git commit --amend --reset-author --no-edit
复制代码


看到最近一次提交的用户名是xiaofu,不是我的个人信息程序员小富,使用amend命令修改一下。


效果

执行命令后最近一次的提交信息从xiaofu变更到了程序员小富,更改成功和预期的效果一致。


git commit --amend --author="程序员小富 <515361725@qq.com>" --no-edit
复制代码



修改完成之后,别忘了推送到远程仓库。


 git push origin master
复制代码

批量修改

Git 官网提供了很多种修改提交记录信息的方法,这里主要介绍下filter-branch,它可以通过脚本的方式批量修改历史提交记录信息。


filter-branch 它能实现如下的功能,正好符合我们要批量修改历史提交记录中用户、邮箱的需求。


  • 全局修改邮箱地址;

  • 从每一个提交中移除一个文件;

  • 使一个子目录做为新的根目录

用法

历史提交记录中有很多用户名xiaofu提交的记录,现在使用filter-branch批量将他们改写成程序员小富



以下是官网提供的脚本,其逻辑很简单:如果遇到用户名为xiaofu的提交记录,将该提交记录的用户名和邮箱修改为程序员小富515361725@qq.com


git filter-branch --commit-filter '        if [ "$GIT_AUTHOR_NAME" = "xiaofu" ];        then                GIT_AUTHOR_NAME="程序员小富";                GIT_AUTHOR_EMAIL="515361725@qq.com";                git commit-tree "$@";        else                git commit-tree "$@";        fi' HEAD
复制代码


为了方便操作,创建一个脚本modifyCommit.sh,放在项目的根目录执行。


chmod +x modifyCommit.shsh modifyCommit.sh
复制代码


执行脚本后稍作等待,出现如下的输出说明已经在执行修改操作了。



执行完毕看到历史提交记录中的用户名xiaofu全都变更成了程序员小富,说明脚本生效了。



如果没有修改成功,可以再次执行,但会出现错误提示A previous backup already exists in refs/original/,说明已经执行过了,执行以下命令清除缓存即可再次执行。



git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
复制代码


修改完成之后,别忘了推送到远程仓库。


 git push origin master
复制代码

GitHub 工具

管理 GitHub 项目,我推荐大家使用 GitHub 官方的 Git 客户端工具GitHub Desktop,这个工具专门用来管理 GitHub 仓库,洁面简洁使用也很方便,主打一个轻量。



有一点比较好,在提交代码时,如果提交的用户信息与当前账号 GitHub 信息不一致还会有提示,这样就不怕误用其他信息提交了。


总结

如果大家平时会维护自己的 GitHub 仓库,建议一定一定要仔细的检查提交的代码,像注释里的公司邮箱信息、代码包路径中的公司标识,凡事涉及公司信息的数据一概去除,不要惹一些不必要的麻烦,数据泄漏这种重可大可小不是闹着玩的。


还有 GitHub 别留太多的个人信息,手机号邮箱就别放了,头像也别傻乎乎的放个自己大头贴,给自己留点回旋的余地。核心思工作和生活要隔离!!!


我是小富~ 下期见

发布于: 刚刚阅读数: 5
用户头像

不积跬步,无以至千里 2018-07-03 加入

公众号-程序员小富,一个技术传播者 个人博客:fire100.top

评论

发布
暂无评论
公司敏感数据被上传Github,吓得我赶紧改提交记录_git_程序员小富_InfoQ写作社区