2016-03-31 11 views
-1

基本的に私のローカルリポジトリに2つのコミットをロールバックしたい。何もリモートにまだプッシュされていません。大きなファイルを削除する方法2 git commit back?

私のGITリポジトリで、私は間違いなくコミット(A)に巨大なzipファイルを追加しました。私はこれを認識し、ファインダを使用してzipファイルを削除し、別のコミット(B)を行いました。

しかし、今、私はまた、中に複数のファイルへの重要な変更の束を持っていた...私は、リモートにこれをプッシュした場合、それは全体のzipファイルが含まれることを実現

そして、物事をより複雑にするためにそれは最初に私が失いたくないことを約束します(A)。

リモートにプッシュする前に履歴からその1つのzipファイルを削除するにはどうすればよいですか?これらの2つのコミットの前に、他のいくつかのファイルの変更をすべて失うことなく、自分のファイルの状態に戻ることができますか?

答えて

0

これを修正する最も簡単な方法は、git reset <commit>コマンドを使用することです。あなたのケースでは

、次の2つのコミットをロールバックしたいから、あなたが行うことができます:git help resetから

git reset HEAD~2

gitがリセット--mixed [<mode>] [<commit>]

をリセット変更されたファイルは保持されますがコミットのためにマークされません)、更新されていないものを報告します。これがデフォルト動作です。

その後、リポジトリ内のファイルはまったく変更されませんが、最新の2つのコミットは存在しなくなります。

通常の方法でコミットするファイルを選択できます。

0

リンク:How to move your HEAD/ revert changes

完全な詳細については、上記のリンクをお読みください。

あなたは使用することができます:ここで上記のポストから撮影


をリセットするために何ができるかの流れであるあなたHEAD

enter image description here


その他のオプション:

How to remove big files from the repository

あなたはgit filter-branchまたはBFG使用することができます。

BFG Repo-Cleaner

gitのフィルタ分岐の代わりhttps://rtyley.github.io/bfg-repo-cleaner/

BFGはある単純な、クレンジング不良データあなたのGitのリポジトリの歴史のうちのためのgit - フィルター分岐への高速代替:

*クレイジービッグファイル*
*削除パスワード、資格情報を削除します&他のプライベートデータ(公式サイトより)

これらの例では、bfgはjava -jar bfg.jarの別名です。

# Delete all files named 'id_rsa' or 'id_dsa' : 
bfg --delete-files id_{dsa,rsa} my-repo.git 
関連する問題