0

破損したファイルを誤ってgitリポジトリにコミットしました。私がラップトップで作業していて、バッテリーが切れたときに破損が発生しました。これが奇妙な記号だけで構成されたファイルになってしまったことにすぐには気づきませんでした。しかし、私はそれを自分のレポにコミットしました。

これで、を使用して以前の破損していないバージョンに戻すことができgit revert HEAD^、ファイルの破損していないバージョンがあります。ここまでは順調ですね。

ただし、ログには、破損したファイルがまだリポジトリのツリーにあることが示されています。今の私の質問:これは問題がありますか、それとも私はそれを忘れることができますか?その破損したコミット/ファイルをリポジトリから消去する方法はありますか?

4

4 に答える 4

1

前のコミットにロールバックするには、

git reset --hard <commit>

現在ブランチを使用しているとすると、ブランチヘッドが指定されたコミットに設定され、ワー​​クツリーがそのコミットにチェックアウトされます。これにより、コミットされていない変更が破棄されます。

後でそれを元に戻したい場合はgit reflog、前のコミットIDを見つけるために使用できます。

于 2013-03-24T21:42:03.780 に答える
1

変更をプッシュしていない場合は、git revertおそらくあなたが望むものではありません。加えられた変更を元に戻す新しいコミットを行います。

git reset --hard <last good commit>不正なコミットを削除するために使用します。あなたがしたように参照でこのコミットに対処することができますHEADが、それはブランチのコミットを調整しません。git reset --hard <branch>~2現在のコミットより前の2つのコミットを参照するなど、ブランチ名で最後の既知の正常なコミットを参照する場合。

于 2013-03-24T21:42:15.827 に答える
1

一般に、履歴を書き直すことはお勧めできません。パブリックプロジェクトでは、ある開発者が書き直される前に元のツリーを取得できた場合、これがスレッドの奇妙な破損の原因となる可能性があります。

ただし、プライベートブランチの場合は、マスターとマージする前に、履歴を書き換えて間違いを隠したい場合があります。

見る:

修正されたコミットをリモートGitリポジトリにプッシュするにはどうすればよいですか?

ここもまた:

Gitツール-履歴の書き換え

于 2013-03-24T21:48:28.020 に答える
0

しないでください。git reset --mixed <good-commit>--mixedデフォルト)ワークスペースファイルを現在の状態に保ち、gitが保存した履歴をリセットします<good-commit>。次に、それを修正し(破損したファイルを修正しgit commit)、最初に必要な状態に(おそらく)到達することができます。

于 2013-03-25T01:37:09.410 に答える