0

背景: リモートを持つローカル リポジトリがあります。かなり長い間、すべてが順調に進んでいます。私は Mac で開発を行っており、GitX を使用しています。これから説明する問題の前に、私は 5 日前にリモートにプッシュし、それ以降、プッシュされていないローカル コミットが 10 件ありました。

問題: GitX でコミットをステージングし、そのコミット メッセージを書き、「コミット」のキーボード ショートカット キーを押しました。(少なくとも、私はそう思います-私はすぐにそれをやったので、おそらく偶然別のことをしたのかもしれません-確かではありません.) その後、次の状況が発生しました:

  1. GitX は master を origin/HEAD および origin/master から完全に切断されていると表示するようになりました。(ここで GitX ウィンドウの一部のスクリーンショットを参照してください。)
  2. GitX は、最後のプッシュ以降の 10 件のコミットの記録も示していません。(最新の 10 個のコミットは、そのスクリーンショットのリストにはありません。)
  3. GitX は、リポジトリ内のすべてのファイルがその 1 つの (最新の) コミットで追加されたかのように、master の現在の位置に履歴がないことを示しているようです。(スクリーンショットには表示されません。)
  4. git logコマンド ラインから1 つのエントリのみを一覧表示します。これは、作成した最後のコミットです。
  5. git log -gコマンドラインから を実行すると、欠落している 10 個のコミットと最新のコミットを含む完全な履歴が一覧表示されます。

何が起こっているのか、なぜ上記の 5 つのことが起こっているのか、私にはわかりません。git loggit log -g(aka )の違いはわかりませんが、git log --walk-reflogs欠落しているデータが存在する場所のようです。

質問:にのみ表示される 10 個のコミットを取り戻すにはどうすればよいgit log -gですか? マスターを残りの履歴に再接続するにはどうすればよいですか? そもそも何がこれを引き起こしたのですか?

4

1 に答える 1

1

私は gitX を知りませんが、誤って親のないコミットを作成したようです。その場合は、次の手順に従う必要があります。

  1. .git何か問題が発生した場合に備えて、リポジトリをコピーします
  2. マスター上の現在のコミットの SHA に注意してください ( SHA1)
  3. git reflog masterand Maybe gitk --walk-reflogsorの組み合わせを使用してgit log --walk-reflogs、以前のコミットの SHA を見つけます ( SHA2)。
  4. 実行git checkout -B master **SHA2**してそのコミットに戻ります
  5. 実行git checkout **SHA1** -- .して変更を作業ディレクトリに戻します
  6. あなたは今、間違いを犯す前の場所に戻っています。変更をコミットすれば完了です。
于 2013-07-15T20:47:26.527 に答える