2017-11-21 16 views
2

私は長い間プライベートにしてきたジャンゴプロジェクトを持っています。私はsettings.pybase_settings.py、およびsecret_settings.pyの機密情報を持つファイルを持っていたプロジェクトの寿命を通して。今私はコードをオープンソースにすることに決めました。私はもはやこのプロジェクトに積極的に取り組んでいません。gitでfilter-branchコマンドから重複したコミットを削除するには?

以下のコマンドを実行してこれらのファイルの履歴を削除し、機密情報がすべて消失したことを確認しました。

git filter-branch -f --tree-filter 'rm -f exchange/settings.py~' HEAD 

私は自分のAWSアカウントを確保し、すべての秘密を削除した:

git filter-branch -f --tree-filter 'rm -f exchange/secret_settings.py' HEAD 
git filter-branch -f --tree-filter 'rm -f exchange/base_settings.py' HEAD 
git filter-branch -f --tree-filter 'rm -f exchange/settings.py' HEAD 

はしかし、githubのは、それは〜それでAWSの情報を持つファイルは、私が走ったの.pyたコミットがまだあったことを私に警告しましたAWSのキーを使用してアカウントを保護しますしかし、今私は、私のコミット履歴全体に対して、時には3つまたは4つのコミットを複製しました。

.git/refsのバックアップに戻すことができますが、動作していないようです。ここで

はプロジェクトです: https://github.com/ProgrammingJoe/Texchange

誰もが、私はこれを修正するために何ができるか知っていますか?

+0

'filter-branch --prune-empty' – jthill

+0

@ 500はコミットを削除しましたが、まだ重複しています。さらに前に戻ることはできますか? – Programmingjoe

+0

私は複数回コマンドを実行しました – Programmingjoe

答えて

1

私はjhillさんのコメントの後にグーグルでいくつかのより多くのをやってしまったと私は新しいブランチ上で次のコマンドを実行しました:私は約300コミットでそれを望んでいたところその後

git filter-branch -f --tree-filter 'rm -f exchange/settings.py' HEAD  
git filter-branch -f --tree-filter 'rm -f exchange/settings.py~' HEAD  
git filter-branch -f --tree-filter 'rm -f exchange/base_settings.py' HEAD  
git filter-branch -f --tree-filter 'rm -f exchange/base_settings.py~' HEAD  
git filter-branch -f --tree-filter 'rm -f exchange/secret_settings.py' HEAD  
git filter-branch -f --tree-filter 'rm -f exchange/secret_settings.py~' HEAD  

を、私の新しいブランチが戻っていました。私はその後、この他のブランチでマスターを完全に上書きする方法を見つけなければなりませんでした。良い練習では、別の場所に私のレポをバックアップとしてクローンしました。私はその後、強制的に押して、マスターブランチを上書きすることができ、何も働かないマージのすべての組み合わせを試してみました。私は、この質問をした:Github, my branch is behind master but it is correct. How do I overwrite master with the branch?

私はその後、私の古いのいくつかは、マスターにコミットが、私はので、私は走っそれらを望んでいたし、どこことに気づい:これはすべて私の問題を修正し

git checkout master 
git reset --hard correct_commit_id 
git push -f origin master 

が、私は偶然の1を削除しました私が持っていたファイル。私はバックアップを持っていた良い事:)。私はなぜgit reset --hard fixed_branchが過去にうまくいかなかったのか分かりません。

関連する問題