Git 削除は最後のローカルコミットのみをプッシュします
質問
Rails プロジェクトのローカル git バージョンに多くの変更を加えましたが、それを失いたくないのですが、その際に誤って ベンダー/バンドル Git 内のフォルダー。
コミットするとすぐに、これを行ったことに気づき、フォルダーに対して git rm を実行し(フォルダーを gitignore に追加し)、再度コミットしました。ただし、バンドルが大きすぎるため、現在はオリジナルをプッシュできません。
必要なもの
- 行った編集 (および新しいファイル) を保持するにはどうすればよいですか。
- git 履歴からバンドル フォルダーを削除するとき
- ディレクトリが大きすぎるため、そのコミットをプッシュしません
ここでソフトリセットのさまざまな方法を探してきましたが、行き詰まっています。
解決
git reset --soft HEAD~x
は、Xがあなたがリセットしたいレビュー数 - 2のリセット数 - 2では、gitignoreファイルにディレクトリを追加し、それを段階領域から削除します。
他のヒント
答えが見つかったと思います:
これはかなり一般的に発生します。誰かが誤って巨大なバイナリファイルを無意味なgit add。でコミットし、どこでも削除したいと思います。おそらく、パスワードを含むファイルを誤ってコミットし、プロジェクトをオープンソースにしたいと思うでしょう。フィルターブランチは、おそらくあなたの歴史全体をスクラブするために使用したいツールです。Passwords.txtという名前のファイルを履歴全体から削除するには、-tree-filterオプションを使用してフィルターブランチを使用できます。
ソース:
git filter-branch --tree-filter 'rm -f /vendor/bundle' HEAD
所属していません StackOverflow