きり丸の技術日記

技術検証したり、資格等をここに残していきます。

JenkinsでGit PushしたらGit detached HEADが発生した

Jenkinsで2回も同じ箇所で引っかかったので、ブログ化。新規性はありません。

状況

Jenkins上でGitリポジトリとブランチを指定して、JenkinsFileを取得している。同一のリポジトリにリリースバージョンを管理するファイルがあり、パイプラインでリリースするたびにバージョンをインクリメントしたい。

だが、git pushをしようとすると、下のエラーログが出力されてgit pushができない。

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

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

環境

  • Jenkins
    • バージョン不明

申し訳ないですが、バージョンはわかりませんでした。

原因と対応

ブランチを指定して取得しても、起動時のブランチのコミットIDで取得することになります。特定のコミットIDでGit pullをしているため、PushしようとするとPush先のブランチが分からず、Git detachedが発生してしまいます。

Additional BehabiorをJenkins側で「Check out to specific local branch」と指定し、ブランチ名を固定するとPushすることができます。


画像が欲しい人は、参考元のStackOverflowを確認してみてください。私が使用していたバージョンとは表示は異なっておりましたが、似たような位置にありました。

終わりに

正直、StackOverflowを読めば一発でわかりますが、2回も同じ経験で失敗したにもかかわらず、キーワードが思いつかずに参考元にたどり着くまでに3時間を無駄にしてしまいました。

同一事象を経験していることは覚えていても、どんな対応したかは残しておかないと覚えられませんね…。

私が3度目の失敗を踏まないように、備忘録としてこの記事を残します。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考

StackOverflow: Jenkins Git plugin detached HEAD stackoverflow.com

f:id:nainaistar:20210514212040p:plain