3

さて、私は GitHub にフォークされたレポを持っています。アップストリームのレポは、フォークしてから更新されていません。昨日、数か月前にレポをフォークする前に作成された最後のアップストリーム コミットに基づいてブランチを作成しました。

ブランチで不適切なコミットを行ったので、ブランチのローカル インスタンスで を使用して元に戻そうとしましたgit push -f origin HEAD^:masterが、ご覧masterのとおり、ブランチの名前を変更するのを忘れていました。そのため、これまでにマスターで行ったすべてを上書きすることになりました。

私の質問は、マスターをこの特定のプッシュの前の状態に戻すことができるように、この混乱を元に戻す方法はありますか?

私は TortoiseGit と TortoiseSVN をよく使用しますが、Git のどのコンポーネントでも以前にマスターで行ったことの残り物を見ることはできませんが、SVN トランクの履歴ログで以前のコミットをすべて見ることができます。以前の状態のマスターのクリーンなローカル インスタンスがありません。

git reset --hard <last good commit hash>またはのようなものを試しましgit push -f origin <last good commit hash>:masterたが、そのようなハッシュを持つコミットは存在しないと言われています。ブラウザーの履歴から GitHub の以前のすべてのコミットに引き続きアクセスできます。

下流には何もないので、その心配はありません。

任意のヒント?

4

2 に答える 2

7

さて、ブランチのローカルインスタンスから修正した方法は次のとおりです。

  1. git log --graph --oneline --all   最後の適切なコミットのハッシュを取得する
  2. git reset --hard <last good commit hash>
  3. git push origin +master
于 2013-06-07T03:12:32.090 に答える
0

試してみてくださいgit reflog。を実行していない場合に失われた可能性のある古いコミット ハッシュが記憶されますgit gc

于 2013-06-07T01:31:54.887 に答える