相关疑难解决方法(0)

从Git历史记录中删除敏感文件及其提交

我想在GitHub上放置一个Git项目,但它包含某些带有敏感数据的文件(用户名和密码,比如/ config/deploy.rb for capistrano).

我知道我可以将这些文件名添加到.gitignore,但这不会删除他们在Git中的历史记录.

我也不想通过删除/.git目录重新开始.

有没有办法删除Git历史记录中特定文件的所有痕迹?

git git-filter-branch git-commit git-rewrite-history

330
推荐指数
9
解决办法
10万
查看次数

BFG Repo Cleaner的正确使用方法

BFG Repo Cleaner站点提供了使用该工具清理存储库的示例,如下所示:

  1. 克隆您的存储库的新副本。

    $ git clone --mirror git://example.com/some-big-repo.git
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行 BFG 来清理你的仓库。

    $ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用 git gc 剔除不需要的脏数据

    $ cd some-big-repo.git
    $ git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将更改推送回远程

    $git push
    
    Run Code Online (Sandbox Code Playgroud)

我知道 head 分支受到保护,因此 head 分支中大于 100M 的任何文件仍将存在。如果我按照描述运行此工具,我将丢失上述 100M 文件的任何历史记录,对吗?因此,如果旧提交中存在该文件的旧版本,它就会消失,我将无法在以前的状态下使用它......正确吗?

另外,我有一个同事说了以下内容,我想知道这是否属实:

如果您推回到 TFS 中镜像的存储库,对包文件的更改将不会反映在远程和未来的克隆上

您必须在 TFS 中创建一个新存储库并将镜像推送到那里,以便远程选择包文件更改。

git tfs bfg-repo-cleaner

4
推荐指数
1
解决办法
1万
查看次数