7

誤ってPython仮想環境ディレクトリvenvをすべてのgitcommitおよびpushアクティビティに含めてしまいました。

に追加venvしました.gitignore。しかし、私の.gitフォルダーはまだ巨大です(以前のコミットとvenvの追跡のために想定しています)。

Herokuが悪夢を引き起こしているので、どうすればgitに追跡を完全に忘れさせvenv、フォルダーを適切なサイズに戻すことができますか?.git

4

5 に答える 5

15

gitリポジトリからファイルを削除してみてください。

git rm --cached venv*

venvRich Stoneは、がフォルダの場合、再帰スイッチを使用する必要があると以下に述べています-r

git rm --cached -r venv*
于 2013-01-18T23:37:04.203 に答える
1

マニュアルgit gcによると、これにより自動ガベージコレクションがトリガーされます。これで問題が解決しない場合は、ここにコメントを残してください。さらにオプションを調査します。

于 2013-01-18T23:35:48.420 に答える
1

いいえ、違います。.gitignore無視されたファイルが誤って追加されないようにするだけですが、履歴からも、HEADからも、すでに追加されている場合はインデックスからも削除されません。

git履歴から大きなファイルを完全に削除するには、履歴の書き換えが必要ですが、これはやや面倒な操作です。特に、履歴の「古い」バージョンを持つ他のリポジトリからのプッシュとプルを中断します。しかし、それは可能です。詳細については、たとえばこの質問またはこれを参照してください。

于 2013-01-18T23:39:16.863 に答える
1

このスレッドを参照してください:追跡されたが現在は.gitignoreにあるファイルについてGitを「忘れる」方法は?

現在のコミットからファイルを取得するのは簡単ですが、ファイルサイズを小さくするために履歴からファイルを完全に削除するのは面倒です。Gitリポジトリのコミット履歴から大きなファイルを削除/削除する方法を参照してください。またはhttps://help.github.com/articles/remove-sensitive-data

最新のコードを新しいgitリポジトリにエクスポートして最初からやり直し、古いコードをアーカイブ用に保持する方が速い場合があります。

于 2013-01-18T23:44:33.037 に答える
1

ファイルを入れても.gitignore、リポジトリからファイルは削除されません。

git filter-brachリポジトリからファイルまたはディレクトリを完全に削除するには、を使用する必要があります。これを行うには、次のコマンドを使用します。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch file/or/dir/with/complete/path' --prune-empty --all

これにより、リポジトリの履歴を変更してfile/or/dir/with/complete/path、すべてのコミットから完全に削除します。git push -f履歴を変更したため、を実行する必要があることを忘れないでください。

于 2013-01-19T01:13:25.267 に答える