2016-11-03 4 views
0

私はGlobリポジトリにいくつかのBlobをチェックインしました。Iveはそれらを消去し、履歴を消去しました。それはすべてOKになったようです。Git GCの後にGit Pushと書かれています。「すべて最新です」

git count-objects -v 
続い21409

git gc --aggressive --prune=now 

:私は

git checkout master 

をすれば

は、今私は200メガバイトは、インパック

git count-objects -v 

番組をダウンロードしてください10

は、インパックで表示されます:15976

しかし、私が困っているところのヘレス。

git push origin --force --tags 

は、最新の

git status 

すべてが分岐マスター であなたのブランチは「起源/マスター」で最新である私に

を与える私を与えます。 コミットするためには何もありません、作業ディレクトリのクリーン

と、私はこの時点で再びレポのクローンを作成する場合、私はそれがきれいにダウンするたびに来るので、私はマスターへのgit GCを押し上げどうすればよい21409 でやり直しますか?

+1

'git status'とは何ですか? –

+0

と、これらをリポジトリからBLOBからどのようにパージしましたか? –

+0

git filter-branch --tree-filter "rm -rf node_modules" --prune-empty HEADですが、すでにコミットされており、repoにプッシュされています。 – David

答えて

2

ガベージコレクションされたデータをサーバーにプッシュすることはできません。実行する必要があります

git gc 

サーバー上で実行する必要があります。または、サーバーが自動的にガベージコレクションを呼び出すまで、1〜2週間待機します。

ガベージコレクションでは、リポジトリの内容は変更されず、不要なデータ(ブランチやタグではない)が削除され、冗長なデータが圧縮されます(変更なしで)実際のデータ)。

ブランチを押すことは、このブランチに必要なすべてのデータをプッシュすることを意味します。 gcが削除した不必要なものはすべてブランチの一部ではないので、Gitはそれを押し込もうとしません。

また、マシン上のブランチとサーバーは同じですが、それはちょうど別の表現です。再度アップロードする必要はありません。

Gitは履歴から削除するとコミットを削除しません。単にグラフから切り離すだけです。 Git(サーバとクライアントの両方)は、定期的にgcを実行し、不要なコミットを削除し、必要なものを再パックします。

+0

私は聞くことを望んでいませんでしたが、ありがとう – David

関連する問題