[解決済み] git reset」を元に戻すには?
2022-03-19 02:43:36
質問
元に戻す最も簡単な方法は何ですか。
git reset HEAD~
現状、考えられるのは
git clone http://...
をリモートレポから取得します。
解決方法は?
簡単にお答えします。
git reset 'HEAD@{1}'
長い回答です。
Git は、すべての ref 更新(チェックアウト、リセット、コミット、マージなど)のログを保持しています。それを見るには、次のように入力します。
git reflog
このリストのどこかに、あなたが失ったコミットがあります。例えば、あなたが今、次のように入力したとしましょう。
git reset HEAD~
で、それを元に戻したい。私のリブログはこんな感じです。
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
1行目には、次のように書かれています。
HEAD
0ポジション前(つまり現在位置)は3f6db14で、これをリセットして得られたのが
HEAD~
. 2行目には、次のように書かれています。
HEAD
1ポジション前(言い換えればリセット前の状態)はd27924eです。これは特定のコミットをチェックアウトして得られたものです(今はそんなことは重要ではありませんが)。そこで、リセットを元に戻すには、次のように実行します。
git reset HEAD@{1}
(または
git reset d27924e
).
一方、それ以降に HEAD を更新するようなコマンドを実行した場合、目的のコミットはリストの最上位にはありません。
reflog
.
最後にもうひとつ。
reflog
よりも、リセット解除したい特定のブランチ (たとえば master) の
HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
これは、一般的なものよりもノイズが少ないはずです。
HEAD reflog
.
関連
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] git rebase の取り消し
-
[解決済み] サブモジュールを含む "git clone "の方法は?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ローカルにない作業がリモートに含まれているため、アップデートが拒否された
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み】なぜ「git commit」は私の変更を保存しないのですか?
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] git commit signing failed: secret key not available.
-
[解決済み] リモートブランチにプッシュできない、ブランチに解決できない