2011-11-21 17 views
9

私はresetでPro Gitの本を読んだ後に悩んでいました。Git:リセット - 過去にはまったよ

私は基本的にリビジョン12へのreset --hardの処理を終えました。

私は現在、または最新のコミットに戻ることはできません。私はresetを使ってORIG_HEADを使ってみましたが、さらに進むためにリビジョンのsha1にそれを送りました。

実行中git status ブランチが12回コミットされ、早送りすることができます。

HEADを最新のコミットに戻すにはどうすればよいですか?

答えて

4

リセットした12のコミットを既にプッシュしているようです。その場合は、その後、REMOTEがリモートの名前です

git merge --ff-only REMOTE/BRANCH_NAME 

作業をする必要があります(一般的にorigin)とBRANCH_NAMEは、現在のブランチの名前です。

+0

それは、ネットワークにアクセスしなくてもそれをしました!クールだけど、接続できないと思っても遠隔地の支店とどのようにマージできるのか本当に分かっていればいいだろうか? – Gabe

+1

'merge'sはローカル操作です(ネットワーク接続が必要な' fetch'です)。 –

11

reflogを使用して、どこに行きたいかを調べます。 git reflogを使用して取得し、適切なコミットにリセットするだけです。リセットしてから何もしなかったとすると、

git reset --hard '[email protected]{1}' 

となります。

+0

ありがとうございますが、役に立たないようです。 reflogで表示された最新のコミットは、私が現在行っているリビジョンです.12個の行方不明のものは表示されません:( – Gabe

+0

前のものは何ですか?reflogはHEADの変更を追跡します –

+0

'git reset - hard 'HEAD @ {1}' 'となり、' git status'によれば、私は今11回だけコミットしています:) – Gabe

3

もう一つの方法は、(REFLOG横に)あなたのブランチはあなたが見る理由である、リモートブランチとして、remotes名前空間の側に参照されるように見えるという事実を使用することです:

Your branch is behind by 12 commits and can be fast-forwarded. 

シンプル

git merge origin/yourBranch 

は、ローカルブランチのHEADをリモートブランチのある場所に早送りするのに十分なはずです。

関連する問題