Git のデタッチされたヘッドを修復するにはどうすればいいですか? 質問する

Git のデタッチされたヘッドを修復するにはどうすればいいですか? 質問する

リポジトリで作業していたところ、ローカルファイルに変更があったことに気付きました。もう変更は必要なかったので、新しいコピーをチェックアウトすればいいと考えて、ファイルを削除しました。Gitで同じことをしたかったのです。

svn up .

使ってもgit pullダメでした。検索してみると、誰かが推奨しているサイトを見つけました。

git checkout HEAD^ src/

(srcは削除されたファイルを含むディレクトリです)。

頭が外れていることに気づきました。それが何なのか全く分かりません。どうすれば元に戻せますか?

ベストアンサー1

ヘッドが切り離されたということは、ブランチ上にいないこと、履歴内の単一のコミット (この場合は HEAD の前のコミット、つまり HEAD^) をチェックアウトしたことを意味します。

切り離されたHEADに関連付けられた変更を保持したい場合は

  1. 実行git switch -c tmp- これにより、 という新しいブランチに変更が保存されますtmp
  2. 走るgit switch master
  3. に加えた変更を に組み込む場合はmaster、ブランチgit merge tmpから を実行します。を実行した後は、 ブランチmasterにいるはずですmastergit switch master

切り離されたHEADに関連付けられた変更を削除する場合

チェックアウトする必要があるのは、現在いるブランチだけです。例:

git switch master

次回ファイルを変更し、インデックス内の状態に復元したい場合は、まずファイルを削除せずに、

git restore -- path/to/foo

これにより、ファイル foo がインデックス内の状態に復元されます。

おすすめ記事