1. ホーム
  2. git

[解決済み] Git push master fatal: あなたは現在ブランチ上にいません。

2023-05-26 13:41:29

質問

マスターはコミット#10にあります。しかし、私は結局、テストによって捕捉されなかった、途中で何かを壊したことに気づきました。

結局、私はコミット #5 まで行き、それからゆっくりと各コミットの開発をやり直し、バグを再発生させないように継続的に調整しました。現在、私は本質的にコミット #10 に戻っていますが、バグが発生しないようにするために多くの変更が加えられています。

私は今、私の変更を使用してコミット #11 を作成したいと思います。しかし、master にプッシュしようとすると、次のようになります。

fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

    git push master HEAD:<name-of-remote-branch>

これは予想されたことです。しかし、実際にリモートブランチにプッシュするにはどうしたらいいのでしょうか?

私は git push origin HEAD:master を試しましたが、その後、このようになりました。

! [rejected]        HEAD -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/tomhammond/sample.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

をすると git status とすると HEAD detached from 4a74ac3

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

<ブロッククオート

しかし、マスターにプッシュしようとすると、次のようになります。

fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD)

<ブロッククオート

当然といえば当然

切り離された状態で作業することは ではなく を期待するのは、あなたが意図的にこれを行いたいのでない限り、私はあなたにとってそうであることを疑っています。 コミット#5をチェックアウトする代わりに、あなたは master ブランチをそのコミットに戻すか、あるいは git rebase を実行し、好きなだけコミットを洗い直すことができます。

とは言うものの、もしあなたが確実に master がデタッチされた状態であることが確実な場合は 本当に を保持したいのであれば、そのために non-fast-forward エラーを回避することができます。

git push origin HEAD:master --force

しかし、強制的にプッシュすると、そのブランチをチェックアウトしている他のすべてのユーザーに問題が発生する危険性があります。 よりリスクの少ない解決策は、切り離された HEAD から一時的なブランチを作成し、そのブランチを master :

git branch temp-branch
git checkout master
git merge temp-branch
git push origin master