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