2011-09-17 4 views
9

悪い初期コミット(または複数)をリモートリポジトリにプッシュしてクリア/破壊する場合は、コマンドで実行できますか?Gitクリアリモートリポジトリ

サーバーから完全に削除して、ディスク領域を使用しないようにすることが重要です。

E.G.今日私はdll、sdfsなどを含むVisual Studioプロジェクト全体をプッシュしました。まず、このファイルはかなり大きく、第2に、他の開発者のVSによって修正され、マージできないものもあります。これで私は少しGoogleになり、これらのファイルを無視する必要があることがわかりました。しかし、最初のコミットはすでに私のリポジトリを混乱させる。私はこれを削除し、ディスク領域を解放したい。

git repoを削除してホストのWebサイト(assembla)から再度追加することはできますが、これは私にとって解決策のようには聞こえません。もっと専門的な方法がありますか?


UPDATE:

私は以下の回答からの提案を試みたが、それはうまくいきませんでした: 'Gitのプッシュ-f' 'Gitのプッシュ--force' 'Gitのプッシュ原点-f'「gitの原点--force」 を押すの結果:あなたはgit push -fで 『正しい』レポを押して強制することができ

$ git push --force 
Counting objects: 19, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (19/19), done. 
Writing objects: 100% (19/19), 6.85 KiB, done. 
Total 19 (delta 3), reused 0 (delta 0) 
remote: error: denying non-fast-forward refs/heads/master (you should pull fir 
) 
To [email protected]:xxxxx.git 
! [remote rejected] master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxxxx.git' 

答えて

9

。ホストに応じて、git gcを実行すると、緩いオブジェクトがクリーンアップされます。 更新:thisによれば、git gcをassemblaに強制することはできません。

すぐにクリーンアップして、アセンブラでgit gcを強制実行できない場合は、もう1つの方法として、レポを削除して新しいものをプッシュする方法があります。

さらに、Ryanがコメントに記載しているように、レポをクローンした可能性があり、歴史を書き直したことを皆に知らせるようにしてください。

+0

+1)ガベージコレクションは、孤立したオブジェクトが適格になるまでクリーンアップされないので、ガベージコレクションが定期的に実行されていることを確認してください。また、2)誰もがあなたが履歴を書き換えていることを確認してください。 –

+1

可能であれば、リモートマスターブランチ 'git push origin:master'を強制的に削除します。一部のリモートリポジトリ設定ではこれが許可されません。 – basicxman

+0

「レポを削除する」という正確な意味は?そのための特別なコマンドはありますか?それとも、アセンブラのWebページでこれを行うことだけですか? – gisek