私はGitHubアカウントのリポジトリで作業していましたが、これは私が偶然見つけた問題です。
- いくつかのnpmパッケージがインストールされたフォルダーを持つNode.jsプロジェクト
- パッケージは
node_modules
フォルダーにありました - そのフォルダーをgitリポジトリーに追加し、コードをgithubにプッシュしました(そのときのnpm部分については考えていませんでした)
- そのフォルダーがコードの一部である必要はないことに気づきました
- そのフォルダを削除してプッシュしました
その場合、gitリポジトリの合計サイズは約6 MBでしたが、実際のコード(そのフォルダーを除くすべて)は約300 KBでした。
最後に私が探しているのは、gitの履歴からそのパッケージフォルダーの詳細を取り除く方法です。そのため、誰かがそれをクローンした場合、実際のファイルのみが取得される6MBの履歴をダウンロードする必要はありません。最後のコミットの時点で300KBになります。
私はこれの可能な解決策を調べ、これらの2つの方法を試しました
- gitリポジトリ(履歴)からファイルを削除する
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Gistは、スクリプトを実行した後、そのフォルダーを削除したことを示し、その後、50の異なるコミットが変更されたことを示したように機能するように見えました。しかし、そのコードをプッシュすることはできませんでした。私がそれをプッシュしようとしたとき、それは言いましBranch up to date
たが、50のコミットがに変更されたことを示しましたgit status
。他の2つの方法も役に立ちませんでした。
そのフォルダーの履歴が削除されたことが示されていても、ローカルホストでそのリポジトリのサイズを確認したところ、まだ約6MBでした。(私もrefs/original
フォルダーを削除しましたが、リポジトリのサイズの変更を確認できませんでした)。
私が明確にしたいのは、コミット履歴(これが私が起こったと思う唯一のことです)だけでなく、gitがロールバックしたいと仮定しているそれらのファイルを取り除く方法があるかどうかです。
これに対する解決策が提示され、私のローカルホストに適用されているが、そのGitHubリポジトリに複製できない場合、そのリポジトリを複製し、最初のコミットにロールバックしてトリックを実行し、それをプッシュすることができます(つまり、gitがまだこれらすべてのコミットの履歴がありますか?-別名6MB)。
私のここでの最終目標は、基本的にgitからフォルダーの内容を削除する最良の方法を見つけることです。これにより、ユーザーは6MB相当のものをダウンロードする必要がなく、モジュールフォルダーに触れたことのない他のコミットも可能です(これはかなり良いことです)それらのほとんどすべて)gitの歴史の中で。
これどうやってするの?