📘

[GitHub] 草が生えなくなった時の対処法

2023/09/09に公開

はじめに

就活時にGitHubの草(コントリビューション)が重視されるのできちんと反映されているか確認したところポートフォリオのディレクトリだけ草が生えていませんでした。
せっかく多くのcommitをしたのに反映されないのはもったいないので、解決方法を模索し解決しました。
その手順をまとめておこうと思います。

GitHubとローカルの名前/メールアドレス設定

今回の原因はローカルのメールアドレス設定をしていなかったからでした。
そのほかにも草をはやすための条件があります。以下のリンクで確認ができます。
https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#common-reasons-that-contributions-are-not-counted

まずGitHubで登録しているメールアドレスを確認します。
アカウントのアイコン→Settings→Emailsから確認できます。

次にターミナルを起動しローカルのusernameとメールアドレスを確認します。
確認する場合は下記Gitコマンドを入力します。

ターミナル
git config --global user.name

git config --global user.email

GitHubの内容と異なっていたので以下のコマンドで変更をします。

ターミナル
git config --global user.name "GitHubのusername"

git config --global user.email "GitHubのメールアドレス"

これで次回からコミットで草が生えるようになります。

過去のcommit情報を一括変更

これまでの作業で、次回から行うcommitについては草が生えるようになりました。
しかし、これだけでは過去コミットした内容については反映されない状態だったのでその方法についても触れておきます。

まずgit logコマンドを使って、過去のcommit履歴を確認します。

commit 701fa27a02309fc12a2105c01a7782c71ef3ef26
| Author: EC2 Default User <ec2-user@ip-172-31-6-194.ap-northeast-1.compute.internal>
| Commit: EC2 Default User <ec2-user@ip-172-31-6-194.ap-northeast-1.compute.internal>
| 
|     [Update]post_records_layout

このような表示になり、GitHubのアカウント情報とは一致してないので草が生えないようでした。
この部分を先ほど変更した内容にできれば草をはやすことができそうです。

一括変更するために下記のコードをターミナルで実施します。

ターミナル
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='GitHubのusername'; GIT_AUTHOR_EMAIL='GitHubのメールアドレス'; GIT_COMMITTER_NAME='GitHubのusername'; GIT_COMMITTER_EMAIL='GitHubのメールアドレス';" HEAD

その後、変更が反映されているか確認します。

ターミナル
$ git log
Merge: bdsb28a 94891d5
Author: GitHubのアカウント名 <GitHubのメールアドレス>
Date:   Sat Jun 26 11:50:52 2021 +0900

変更内容が確認出来たらGitHubにpushします。

ターミナル
git push -f origin master

これで過去の分も草をはやすことができました!!

参考にさせていただいた記事

https://qiita.com/Sakuya_wd/items/f50fbaba81bbf98eace5
https://qiita.com/makidaiki9180/items/f18f5c06ec826d431d25

まとめ

メールアドレス設定の変更で解決できると思いきや思い通りに草が生えずに焦りましたが、落ち着いて原因を探したところ何とか解決することができました。
この失敗からgit init をした段階で設定しているGitHubの情報があっているかの確認を癖づける意識が重要だと認識しました。

Discussion