3

(ブランチなしの)ブランチでコミットした後、プルを実行し、間違ったブランチにいることに気付き、「チェックアウトマスター」と別のプルを実行しました。マスターブランチをプッシュする元のコミットが見つからず、(ブランチなし)に切り替えることができません。コミットを復活させる方法や差分を取得する方法はありますか?

4

1 に答える 1

6

は、実行したすべてのgit reflogコミットを一覧表示し、(たとえば)git merge HEAD@{1}それをブランチにマージします。

$ git reflog
734713b... HEAD@{0}: commit: fixed refs handling, added gc auto, updated
d921970... HEAD@{1}: merge phedders/rdocs: Merge made by recursive.
1c002dd... HEAD@{2}: commit: added some blame and merge stuff

差出人git rev-parse

<refname>@{<n>}, e.g. master@{1}

refの後@に、中括弧のペア(たとえば{1}{15})で囲まれた序数指定の接尾辞が続くと、そのrefのn番目の前の値が指定されます。

aも同じことをすることに注意してくださいgit rebase -i

リビジョンの選択ページには次の内容が記載されています。

reflog情報は厳密にローカルであることに注意することが重要です—これはリポジトリで行ったことのログです。
他の誰かのリポジトリのコピーでは、参照は同じにはなりません。また、最初にリポジトリのクローンを作成した直後は、リポジトリでアクティビティがまだ発生していないため、空のreflogが作成されます。

設定gc.reflogExpireは、この時間より古いreflogエントリをいつ削除するかを指定します。デフォルトは90日です。

于 2012-09-05T04:20:15.767 に答える