2016-08-26 24 views
1

私は、古いコミットがソース管理にはならない機密ファイルをコミットしたことに気付きました。古いコミットから単一のファイルを削除する

しかし、その時以来、多くの枝とマージがありました。私が元のコミットに戻り、リセットしてコミットをやり直すと、それ以降はすべてのブランチとマージをリベースして繰り返すことになります。

ファイルは元のコミット以来まったく編集されていません。 git log badfile.extは、そのコミット以外は何も表示しません。

リポジトリの履歴を、このファイルが存在しなかったように見せるために使用できる方法はありますか?それ以降のすべてのコミットを変更する必要はありませんか?

これはプライベートレポですので、私はすべてのクローンコピーがどこにあるか知っています。 1つのリポジトリで問題を修正してから、他のすべてのリポジトリを削除して再クローンして変更を取得する必要がある場合は問題ありません。

+2

あなたは履歴を書き換えようとしています。これは、その後のすべてのコミットを定義によって変更します。 – SLaks

+0

@SLaks元のコミットを手作業で編集してもハッシュを変更しないようなことは想像しています(変更がなかったので、後でコミットするのは編集を必要としません)。 –

+2

いいえ。コミットのハッシュは、すべての変更ファイルとその親コミットのハッシュです。これは、gitの履歴と完全性モデルがどのように機能するかです。 – SLaks

答えて

1

ギブスのドキュメントremoving sensible dataを参照してください。ここで言及したように、履歴を書き直すことなくこれを行うことはできません(あるコミットを変更するということは、そのハッシュを変更するということです、つまり、それを指すすべてのコミットも変更する必要があります)。

また、クローンの履歴をパージすることも(可能であれば)意味をなさないことに注意してください。

基本的には、リポジトリの作業に携わるすべての人に変更をすべてプッシュし、中央リポジトリの履歴を書き換え、ローカルクローンを削除し、更新されたリポジトリからクローンを作成する必要があります。

関連する問題