そこで、git を使用して大量のファイルを 1 回プルしました (大規模)。
しかし、git rm
gitが元からプルするのに時間がかかり始めたため、gitデータベースからディレクトリを削除していましたが、呼び出しgit rm
ても問題は解決しませんでした.gitは元からプルするのにまだ時間がかかります.
この問題を解決するには、リポジトリを再作成する以外に何ができますか?
そこで、git を使用して大量のファイルを 1 回プルしました (大規模)。
しかし、git rm
gitが元からプルするのに時間がかかり始めたため、gitデータベースからディレクトリを削除していましたが、呼び出しgit rm
ても問題は解決しませんでした.gitは元からプルするのにまだ時間がかかります.
この問題を解決するには、リポジトリを再作成する以外に何ができますか?
git はすべてのコミットの履歴を保持するため、そのコンテンツは技術的には git リポジトリにあります (ありがたいことに、まさにソース リポジトリの利点です :)
過去の履歴を書き換えて、フォルダへのすべての参照を削除できます。
このサイトには、次を使用した例がありますfilter-branch
。
http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository
注:履歴を書き換えているため、レポをサーバーに強制的にプッシュする必要があります。他の人が使用/コミットしている場合、トラブルの原因となる可能性があります。
編集:トピックに関する別の興味深い読み物: http://ramblinglabs.com/blog/2012/04/git-removing-sensitive-data-and-rewriting-history
git rm
リポジトリで参照したヘッドの現在の履歴でコミットされた大きなオブジェクト (ブランチ、タグなど) は実際には削除されません。
これが原因で git のプルが遅くなるかどうかはわかりません (私の経験では、大きな差をプルすると、その後のプルでは速く正常に戻るはずです)。大きな違いを含むコミットを完全に削除するには、git rebase
.
それが完了したら、git gc
リポジトリから切り離されたオブジェクトをクリーンアップし、全体のサイズを縮小することができます。リモートリポジトリと再同期するには、強制プッシュを行う必要があります。