3

WindowsでGitGuiとGitkを使用しています。過去2時間以内からハードリセットを元に戻すにはどうすればよいですか?

(コマンドラインを使用せずに、これらのアプリケーションからこれを実行することは可能ですか?)

私はこのSO投稿を見ました。これは、gitのガベージコレクションが発生する前に元に戻すことが可能であると述べています。これらのアプリケーションの一方または両方を終了して再度開いた可能性があります。

4

3 に答える 3

4
  1. git reset --hardを実行したときにコミットされなかった変更が作業ツリーにあった場合、それらの変更は永久に失われます。それらを再現するには、(頭の中の)記憶を使用する必要があります。

  2. 切り替えたコミットの後にコミットされた変更は失われません。それらはおそらくそれらを指し示す参照を持たず、それらを見つけるのをより困難にします。リポジトリへのすべての低レベルの変更を一覧表示するツールはですgit reflog。元に戻したいコミットを見つけたら、最初の行のハッシュ番号を確認し、git reset --hard #hashnumberまたはを使用git checkout #hashnumberして変更を取得します。私はこの便利な行をhttp://quirkygba.blogspot.com/2008/11/recovering-history-with-git-reflog.htmlで見つけました:

gitk --all $(git reflog | cut -c1-7)

これにより、gitkのすべての非表示の変更が表示され、新しいブランチを快適に表示、ポイント、クリック、および作成できます。

あなたが言及したように、参照されていないコミットは通常30日間リポジトリに保持されます。

編集:編集が少なくとも6文字になるように、ここに何かを追加する必要があります。コードの修正が6文字未満の場合もありますが、結局のところ、この投稿では他に改善すべき点があるかもしれません。

于 2011-01-17T15:19:20.300 に答える
2

質問のリンクにあるBrianRiehmanとPatNotzの回答を参照してください。

1つの解決策は、コマンドラインを使用することです。

Windowsでは、ディレクトリを含むディレクトリでDOSを開きます.git

次のように入力して、実行するコミットを確認します。

"c:\Program Files\Git\bin\git.exe" reflog

特定のコミットに移動するには、次のように入力します。最後の式は、そのコミットのSHA1コードです。

"c:\Program Files\Git\bin\git.exe" reset --hard 5eb4080
于 2010-10-02T02:34:12.533 に答える
0

ハードリセットを元に戻してコミットされていない変更を元に戻すことはできないと思います-blobはまだ利用可能であるため、リベースを元に戻すことができますが、Gitに最新の変更をコミットしたことがない場合は、上書きしたものはすべて履歴である可能性があります。私は間違っていることを知りたいのですが!

于 2010-10-01T22:34:10.050 に答える