はじめに
Githubにプルリクエストをあげるより前に気づかなければいけなかったこと。おそらく初めの方で学習した内容。ですが、すっかり忘れていてError?注意の表記が出るまでちゃんと認識していませんでした。これからの為にも記事に残しておきたいと思います
環境
- Windows, WSL
- Docker
- Ruby 3.2.3
- Rails 7.1.3
1:Githubにて気づいたエラー
英文は下記になります👇
The head ref may contain hidden characters: "05\u30DD\u30B9\u30C8\u8A73\u7D30"
これが何を意味しているのか
このメッセージは、Git での操作中にリファレンス(参照)名に隠れた文字が含まれている可能性があることを示しています。隠れた文字(例: 特殊文字、制御文字、または非表示文字)がリファレンス名に含まれていると、Git がそれを正しく処理できないことがあります。
2:この問題に対処するためのステップはいくつかありました
-
リファレンス名の確認
-
隠れた文字が含まれている可能性があるリファレンス名を確認します。リファレンス名には、ブランチ名、タグ名、リモートのリファレンスなどがあります。
-
下記コマンドで、リファレンス名に不審な文字が含まれていないか確認します。
git branch -a git tag git remote show origin
-
-
リファレンスの修正または削除
-
隠れた文字が含まれているリファレンス名を修正または削除する必要があります。以下はリファレンスの名前変更や削除のコマンドです。
-
ブランチ名の変更:
git branch -m old-branch-name new-branch-name
-
タグ名の変更:
git tag new-tag-name old-tag-name git tag -d old-tag-name
-
リモートのブランチやタグの削除:
git push origin --delete branch-name git push origin :refs/tags/tag-name
-
-
リファレンスのクリーンアップ
- 隠れた文字が含まれているリファレンスが正しく修正または削除されたら、Git のリポジトリをクリーンアップするために、次のコマンドを実行します。
git fetch --prune git remote prune origin
-
リポジトリの整合性チェック
- Git リポジトリの整合性をチェックし、問題がないか確認します。
git fsck
3:私が行ったこと
👇私が実際にした流れになります
1:リファレンス名の確認
$ git branch -a
01readme
02fig
03ER
04_create_post
* 05ポスト詳細
main
remotes/origin/01readme
remotes/origin/02fig
remotes/origin/03ER
remotes/origin/04_create_post
remotes/origin/05ポスト詳細
remotes/origin/main
05ポスト詳細
というブランチ名に日本語が含まれているのがわかります。よく調べると、日本語や特殊文字が含まれるリファレンス名が問題を引き起こすことがあるため、これが原因でエラーが発生している可能性があるという事がわかりました
2:ブランチ名の変更~整合性の✅チェックまで
さっそく、
日本語を含むブランチ名を英数字に変更してみます。
git branch -m 05ポスト詳細 05-post-details
つぎに、一度git add .
とgit commit -m 'コメント'
そしてgit push --set-upstream origin 05ポスト詳細
を実行してしまっているので、リモートブランチも変更していきます
# ローカルブランチの名前変更
git branch -m 05ポスト詳細 05-post-details
# リモートブランチの削除とプッシュ
git push origin :refs/heads/05ポスト詳細
git push origin 05-post-details
# リモートトラッキング情報の更新。不要なリファレンスを削除
git fetch origin --prune
# リポジトリの整合性を確認し、問題がないか確認
git fsck
さいごに、まとめ
リファレンス名に日本語や特殊文字が含まれている場合、Git が正しく処理できないことがあるという事を、今回のエラーから学びました。
日本語になってるくらい大丈夫でしょ?という思い込みだけでその先に進まず、一度エラー内容をよく調べて少しずつ進めていきたいと思います
今回の記事が何か参考になれば幸いです。