0

いくつかのファイルをローカルで台無しにして、それらをリポジトリにプッシュしました。間違いに気付いたときに古いバージョンに戻したいと思いました。検索を行ったところ、ここで同様の質問が見つかったので、回答に従って次のことを行いました。

git log
git reset --hard <hash>
git push -f origin master

現在、私は自分の大学で github を使用しており、以前は教授リポジトリから古い課題の解決策を引き出していました。私が実行したとき、教授のソリューション ハッシュを選択したと推測してgit reset --hardいます。これは、リポジトリが教授によって作成されたものであり、古いソリューション ファイルがすべて含まれており、自分のファイルが含まれていないためです。ローカルでもすべてが置き換えられgit log、教授によるソリューション リポジトリへのコミットのみが表示されます。以前のコミットを取り戻す方法はありますか?

4

1 に答える 1

3

git reflogハードリセットの前に戻るために使用できます。

実行git reflogすると、次のようになります。

f735139 HEAD@{0}: reset: moving to HEAD~1
a76edca HEAD@{1}: commit: second commit
f735139 HEAD@{2}: commit (initial): initial commit

次のように、リセット前にコミットをチェックアウトできます。

git checkout HEAD@{1}

デタッチされたヘッドの警告が表示されるため、リセットの前に開始する新しいブランチを作成します。

git checkout -b <new branch name>

これで、ハード リセット前のすべてのブランチが作成されます。

将来、過去に戻りたい場合は、リセット先のコミットに新しいブランチを作成します。あなたはこのようにすることができます:

git checkout <sha-1 hash of the commit you reset to>
git checkout -b <new branch name>

このようにして、マスター ブランチをそのままにして、以前の時点で新しいブランチを作成します。


編集:プッシュされたリセットをマスターに元に戻す変更をマージしたいので、リモートの変更をマージして破棄することをお勧めします。これを試して:

git fetch origin master
git merge FETCH_HEAD -s ours

その後、プッシュできるはずです。

于 2013-09-28T18:16:52.563 に答える