GitHubの芝生は主にissueやmasterへのpushなどで生えます
詳しくはここを参照
しかし、ローカルの.gitconfigに登録されているメールアドレスとリモートリポジトリのメアドが一致してないと、ローカルブランチのcommitをプッシュしても芝生に反映されません
違うアドレスでcommitしてしまったり、そもそも.gitconfigが設定されてなかったりなど、あとから気づいて困ることがあると思います
ミスしたコミットがひとつやふたつならひとつずつ手作業で解決できますが、該当コミットがいくつもある場合は一つずつやってられないのでgit filter-branch
コマンドを使って修正する必要があります
過去のコミットにさかのぼって芝生を生やす方法を総括的に解説した記事が見当たらなかったので、メモがてらこの記事にまとめます
環境によってうまく行かない場合もあるようなので要注意です
すべての操作はバックアップを取った状態で行ってください
方法
ローカルブランチの過去コミットのAUTHOR情報とCOMMITTER情報を書き換えます
git filter-branch -f --commit-filter '
GIT_AUTHOR_NAME="your_name"
GIT_AUTHOR_EMAIL="your_email@gmail.com"
GIT_COMMITTER_NAME="your_name"
GIT_COMMITTER_EMAIL="your_email@gmail.com"
git commit-tree "$@"
' HEAD
リモートブランチに反映させます
git push -f origin master
この時点で芝生に反映されたはずなので確認してみましょう
ここからが重要なのですが、過去のコミットをすべて書き換えたため、このままだとローカルから新しいコミットをプッシュできません
またgit pull origin master
とすると以下のエラーが出ます
fatal: refusing to merge unrelated histories
そのため、一旦ローカルリポジトリを削除したあと、リモートリポジトリからクローンしてくる必要があります1
cd ../
rm -r your-repository/
git clone https://github.com/username/your-repository.git
cd your-repository/