2016-11-30 5 views
1

何とか私は偶然に2GB以上のファイルを追加し、これをプッシュしようと考えずに本当に大きなローカルリポジトリを持っています。私は、中止されたファイルを削除し、付託をしましたが、私はのBitbucketにgit push origin masterしようとすると、それはで失敗します。私は長いので、不要なファイルを削除したにもかかわらず、Git - "プッシュ"をリセットする方法

fatal: The remote end hung up unexpectedly 

マイ.gitファイルは依然として巨大です。プッシュが2 GBを超えているので、Bitbucketはhttp.postBufferを高い数値に設定する必要があると言います。私はこれを何回もやったことがありますが、約15回の試行後にやり直したいと思います。私はそれを修正すればよいか、

On branch master 
Your branch is ahead of 'origin/master' by 4 commits. 
    (use "git push" to publish your local commits) 

しかしプッシュが機能したことがないので、:

git statusは私にこれを提供しますか?最悪のシナリオ私はちょうどレポを爆破して再構築することができますが、失敗を続けるので、プッシュをリセットする方法があるかどうかを知りたいと思います。

+1

を使用してリベースを完了しましょうか?これはバージョン管理システムであり、古いバージョン(削除されたファイルも含む)も保持します。すべてのレコードを完全に消去するために履歴を書き直す必要があります(おそらくガベージコレクトします)。 – Thilo

+1

[Gitリポジトリのコミット履歴から大きなファイルを削除/削除するにはどうすればいいですか?](http://stackoverflow.com/questions/2100907/how-to-remove-delete-a-large-file-from-コミット履歴in gitリポジトリ) – Thilo

+0

この質問はかなり頻繁に現れますが、 'git filter-branch'や' git rebase -i'を使って悪いコミットを取り除くことができます。すぐにそうしなさい、従って彼らはそれ以上埋葬されません。 –

答えて

2

選ばコミットしますgit reset

git reset --hard <commit-id> 

でそれを行うことができますweigreen’s answerは、問題のあるコミットが最新のものである場合に役立ちます。他のケースでは、rewrite the historyが必要です。私は対話型rebaseを好むでしょう。

git rebase -i <some-commit-before-the-problematic-one> 

それは彼らがそうであるようにそれらをpickするデフォルトのアクションと一緒にコミットのリストが表示されます。問題のあるコミットを維持したい場合は、その行のpickeditに変更してください。それをまったく削除したい場合は、行を削除してください。そのコミットを編集することを選択した場合、問題のあるコミットをしたときのように、作業ツリーを状態にします。あなたが必要なものを変更し、修正コミット:その後

git commit --amend 

、Gitはどのようにして、「不要なファイルを削除する」でした

git rebase --continue 
+0

これはうまくいったでしょう。私はハードリセットをやり終え、プッシュを強制した。私はまだハードリセットをしていないと、あなたのソリューションはうまくいくはずでした。: – Tensigh

+0

@Tensigh 'git gc'を実行するまで、' git reflog'を使って削除されたrefsにアクセスすることができます。 – Melebius

+0

よろしくお願い致します。どのようにロールバックするのですか? – Tensigh

1

あなたは、あなたがコミット-IDを取得することができますgit log

を使用することによってあなたはHEADの間ですべての作業を失い、あなたは

+1

私はインタラクティブなリベースがより理にかなっていると思います。リベースを使用すると、後の作業を保持できます。 rebaseと答えはブランチの履歴を書き換えるので、どちらの方法もこの観点からは優れていません。 –

+0

これは、巨大なファイルを含むかもしれない他のブランチやタグには何もしません。 – Thilo

関連する問題