2017-12-13 2 views
0

私は最近、機密情報を含む.envファイルを誤って犯したことに気付きました。私の推測では、Webstormが作成した直後に.gitignoreファイルに追加されたため、gitにファイルを追加したいのかどうか尋ねられたときに私が誤ってOKをクリックしたということです。私はこのファイルが数週間VCSに継続的にプッシュされていたことに気付かなかった。すぐにgit rm --cached .envを実行し、BFG-Repo Cleanerを使用して、私のバージョン履歴からファイルをパージしました。問題は、BFG-Repo Cleanerが仕事をしていた(間違いなく、すべてのコミットが現在複製されている)、私のコミット履歴のどこにもファイルが存在しなくなったことです。パスワードとキー。これはBFG-Repo Cleanerを実行した通常の結果ですか?もしそうなら、どうしたらそのコミットを履歴から取り除くことができますか?私が見つけることができる答えのほとんどは、私が取り除きたいものの前にコミットに戻すためにgit reset --hardを使用することを参照していますが、その時点で私の仕事を失うことは望ましくありません。履歴から機密情報が含まれているコミットを削除する

バージョン履歴から機密データを削除するために設計されたツールでは、機密データが削除されたコミットのdiffが表示されることがあります。

それはgit-filter-branchに簡単に代わるように思えたとして、私はBFG-レポクリーナーを使用したが、今ここにgit-filter-branchを使用するためのユースケースがあり、ファイルを削除しますが、内容を示しているコミット削除しません削除したファイルですか?

答えて

1

オプション1:ファイルを別のコミットとしてコミットする場合。

git rebase -i commit_hash of one less than needed and remove that commit. 

としましょう:これはあなたの歴史

commit 5347819473b66359e8324004470040bee0892447 (HEAD -> master) 
Author: XXXX 
Date: Wed Dec 13 21:43:29 2017 +0530 

    third commit 

blah2.h | 1 + 
1 file changed, 1 insertion(+) 

commit d88e9dc5aadfad5872a2cc8214ba5295e2668526 
Author: XXXX 
Date: Wed Dec 13 21:42:56 2017 +0530 

    second commit 

blah1.h | 1 + 
1 file changed, 1 insertion(+) 

commit 2419b28fee57a6923ce37e2e144c12d88fb75183 
Author: XXXX 
Date: Wed Dec 13 21:42:33 2017 +0530 

    first commit 

blah.h | 1 + 
1 file changed, 1 insertion(+) 

をコミットされていては、第二のコミット削除します。

git rebase -i 2419b28fee57a6923ce37e2e144c12d88fb75183 - Commit hash of first commit. And then interactively remove the line containing the second commit and save. 

オプション2:あなたは、同様に他の変更を使用してファイルをコミットする場合は、

git reset commit_hash of one less than needed. 

は、新たとして、その後のすべての変更がコミット無視してコミットgitのためにそのファイルを追加します。これで、そのファイルをコミットした時点からプロジェクトの履歴が失われます。

関連する問題