1. ホーム
  2. git

[解決済み] GITリストア 直前のデタッチされたHEAD

2022-11-28 12:18:35

質問

私のプロジェクトで大きな問題があります。 私はGITの下でxcodeプロジェクトを持っています。今日、私は最後のコミットがいくつかのテストを壊したことに気づいたので、私は前のコミットをチェックアウトしました。 私はSourceTreeを使用し、これは警告です。

この操作を行うと、作業コピーが 'detached HEAD' になり、ブランチから外れることになります。この後にコミットしたい場合は、おそらくもう一度ブランチをチェックアウトするか、新しいブランチを作成することになるでしょう。これでよいのでしょうか?

私は丸一日働き、最後にすべてをコミットしました。 そこで、開発ブランチに自分の仕事をマージする必要があったので、開発ブランチをチェックアウトしたら、...私の仕事は即座に消えてしまいました :(

HEADを切り離したのは間違っていたし、Sourcetreeは私に警告しました...しかし、私の仕事を復元する方法があるのでしょうか?

どのように解決するのですか?

もし、あなたが git reflog と入力すると、どのようなリビジョンがあったかの履歴が表示されます。 HEAD が指したリビジョンの履歴が表示されます。あなたの切り離された頭はその中にあるはずです。それを見つけたら、次のようにしてください。 git checkout -b my-new-branch abc123 または git branch my-new-branch abc123 (ここで abc123 は切り離した HEAD の SHA-1 です) を使って、切り離した HEAD を指す新しいブランチを作成します。これで、そのブランチを自由にマージすることができます。

一般的に、切り離されたヘッドで作業した後にブランチをチェックアウトすると、Git は切り離されたヘッドにいたコミットを教えてくれるので、必要であればそれを復元することができます。私はSourceTreeを使ったことがないので、そのようなメッセージを中継しているかどうかはわかりません。しかし、もしそのメッセージが表示されるのなら、それを使ってコミットを見つけることができるはずです。そして再び git checkout -b または git branch でそのコミットからのブランチを作成します。