3

自分の git リビジョンにあるはずのないファイルがあることがわかったとします。パスワード、API キー、企業秘密文書など。

それらが表示されるリビジョンでこれらのファイルを削除する方法はありますか? それでも残りのファイルをそのリビジョンに保持しますか?

4

1 に答える 1

1

git filter-branch役に立つかもしれません。これにより、一連の過去のコミットを書き換えて、コミットされた内容を変更できます。

行った変更がローカル リポジトリから離れていない場合、これは機能します。問題のある変更をどこかにプッシュした場合、または誰かがそれらをあなたから引っ張った場合、全員のリポジトリでそれらを取り除くというより大きな問題があります。

ただし、ローカル リポジトリを修正するには:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch bad-file1.txt bad-file2.txt' master..abc

これの意味は:

  • git filter-branch: いくつかのコミットを書き直してみましょう!

  • --index-filter: ディスク上で実際にチェックアウトせずに、各コミットのインデックスを変更します。

  • 'git rm --cached --ignore-unmatch bad-file1.txt bad-file2.txt': コミットごとに、2 つのファイルが存在する場合はステージングを解除します。

  • master..abc: master ブランチから分岐した場所に戻る、ブランチ abc のすべてのコミットでこれを行います。master~3過去 3 回のコミット、またはその他の範囲のリビジョンを書き換えるには、 「」と言うことができます。" -- --all" (2 つのダッシュ、スペース、2 つのダッシュ、「すべて」) を使用して、リポジトリ内のすべてを書き換えることもできます。

于 2012-07-15T16:37:34.573 に答える