サーチ…


前書き

パスワードやSSH鍵などの機密データをGitリポジトリにコミットする場合は、履歴から削除することができます。リポジトリの履歴から不要なファイルを完全に削除するには、git filter-branchコマンドまたはBFG Repo-Cleanerを使用できます。

備考

  1. あなたの古い(汚染された)リポジトリ履歴から作成したブランチは、共同作業者にリベースして、マージしないように伝えてください。 1つのマージコミットは、汚染された履歴の一部または全部を再導入し、パージの手間をかけたばかりです。

  2. しばらくしてgit filter-branchに意図しない副作用がないと確信していれば、次のコマンド(Git 1.8.5以降を使用)を使って、ローカルリポジトリのすべてのオブジェクトの参照を解除し、ガベージコレクションを強制できます。

    git for-each-ref --format = '%(refname)を削除する' refs / original | git update-ref --stdin

    git reflog expire --expire = now --all

    git gc --prune = now

filter-branchを使用する

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all

重要なデータを含むファイルを.gitignoreに追加して、間違って再度コミットしないようにします。

echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"

ローカルリポジトリをGitHubにプッシュする

git push origin --force --all

あなたのタグ付きリリースから機密ファイルを削除するには、Gitタグを強制的に押す必要があります:

git push origin --force --tags

BFGレポクリーナーの使用

BFG Repo Cleanerは、git filter-branchの代わりです。これは、ソースからコンパイルされたバイナリのように間違ってコミットされた機密データや大きなファイルを削除するために使用できます。これはScalaで書かれています。

プロジェクトのウェブサイト: BFG Repo Cleaner

要件

Java Runtime Environment(Java 7以上 - BFG v1.12.3はJava 6をサポートする最後のバージョン) Scalaライブラリと他のすべての依存関係は、ダウンロード可能なjarファイルに折りたたまれています。

機密データを含むファイルを削除する

bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow