はじめに
こんにちは!最近 GitHub で毎日コードを書いているのに、貢献の草(緑色)が表示されず、悩んでいました。
原因は「Git のコミットに使われていたメールアドレスが GitHub に登録されていなかったこと」でした。
この記事では、その原因の解決方法と、過去のコミットも草にする方法を紹介します!
草が表示されない主な原因
1. Git のメールアドレスが GitHub に登録されていない
GitHub はコミット時の「メールアドレス」でユーザーを識別します。
確認方法:
git config user.email
対処方法:
GitHub の Settings > Emails にアクセスし、
このメールアドレスが「Verified」になっているか確認してください。
もし違う場合、以下で正しいメールを設定します:
git config --global user.email "your_email@example.com"
2. git commit
だけで git push
していない
ローカルでのコミットだけでは草は増えません。GitHub に push する必要があります。
git push origin main # または master
3. フォークしたリポジトリにしかコミットしていない
GitHub の草は、自分が所有するリポジトリやデフォルトブランチへの貢献でカウントされます。
4. 過去のコミットのメールアドレスを修正したい
ここが今回のポイント!
過去のコミットを GitHub に登録済みのメールに修正すれば、草としてカウントされるようになります
過去のコミットを修正して草を生やす方法
スクリプトで履歴を書き換える(git filter-branch
)
git filter-branch --env-filter '
OLD_EMAIL="旧メール@example.com"
CORRECT_NAME="GitHub のユーザー名"
CORRECT_EMAIL="正しいメール@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
強制 push
git push --force --tags origin main # または master
注意点
- 履歴の rewrite をするので、チーム開発中のリポジトリでは非推奨です
- 自分の個人プロジェクトであれば問題ありません
- GitHub の草はすぐには反映されないこともあります(数分~数時間)
まとめ
状況 | 解決方法 |
---|---|
草が生えない | Git のメールが GitHub に登録されているか確認 |
過去のコミットを反映したい |
git filter-branch で履歴を修正 |
草を生やすには? | デフォルトブランチに push! |
最後まで読んでいただきありがとうございます!
同じ悩みを持つ方の参考になれば幸いです!