2017-02-28 4 views
1

私は誤って機密情報をリポジトリにコミットし、そのコミットを公開リポジトリから削除する強制プッシュを行いました。履歴を書き直すと、gitは古いファイルをしばらく保存しますか?

その後、すべての公開パスワードを変更しました。

これはgitに関する技術的な質問です。削除されたコミットのレコードは、ローカルのgitリポジトリに残っていますか?そしてそれはある期間の後に消えますか?これはどこに文書化されていますか?

+1

はい。それはしばらくの間、地方のレポと遠隔レポにまだあります(実際はかなり長い)。 'git gc'をチェックしてください。公開されたすべてのパスワードを変更する方が良い。 – ElpieKay

答えて

1

push --forceの後、古い履歴のコミットは依然としてリポジトリの一部です。それらは、どのブランチからでも到達することができません。 (push --forcehereからのコミットについての議論があります)。もうコミットへの参照がなくなると、コミットはダングリングになり、git gcによってガベージコレクションされます(git gcのドキュメントについてはhereを参照してください)。

ただし、コミットへの参照がある限り、ガベージコレクションは行われません。ブランチがなく、コミットを指し示すタグがなく、そのタグがもはやreflogから参照されていない場合、これが当てはまります。 reflogの部分については、this discussionで説明します。

答えは「はい」です。あなたの古いコミットは引き続き存在します。はい、期間が過ぎると消えてしまいますが、それはいつか分かりません。すべての参照を手作業で削除することができます(該当する場合はブランチ/タグの削除を行い、参照ログの場合はgit reflog --expire=<time>hereを参照)。

深いところで何が起こっているのかを深く理解するために、thisの記事をお勧めします。

関連する問題