LoginSignup
1
1

More than 3 years have passed since last update.

GitHubに移したリポジトリの草が生えない時の対処法

Last updated at Posted at 2020-01-25

はじめに

この記事で行なっている作業はコミット履歴を全て更新するため、自分しかコミットしていないリポジトリ向けです。

問題発生

BitBucketからGitHubへのリポジトリ移行作業を行なっていたところ、移したリポジトリのコミットがコントリビューションに反映されないという問題が起きました。

原因

せっかくリポジトリを移したなら草も生やしたいものです。
原因を調べてみると、昔のリポジトリにコミットした時のauthorと今のGitHubアカウントに設定しているauthorのメールアドレスが異なるため、コントリビューションに反映されないのだということが判明。

解決方法

コミット内容に問題があると分かったため、修正します。
まず現在設定しているauthorの情報を見るためにローカルでgit config --listを実行。

gon@hon-no-MBP ~ % git config --list --global 
user.name=gon
user.email=new-gon@example.co.jp
core.excludesfile=/Users/gon/.gitignore_global
difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
difftool.sourcetree.path=
mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED"
mergetool.sourcetree.trustexitcode=true

user.emailがGitHubに設定しているメールアドレスと同じなら大丈夫です。

次に問題のリポジトリをローカルにクローン。クローンしたリポジトリに移動し、git filter-branchコマンドを実行。authorとcommitterのメールアドレスと名前を現在使用しているものに変更しましょう。
git filter-branchは一度に大量のコミットを書き換えられる便利なコマンドです。
詳しくはこちら

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='gon'; GIT_AUTHOR_EMAIL='new-gon@example@example.co.jp'; GIT_COMMITTER_NAME='gon'; GIT_COMMITTER_EMAIL='a-new@example@example.co.jp'
;" HEAD

その後、もう一度git logでコミット履歴を確認すると、コミットのauthorのメールアドレスが先ほど設定したものに変わっています。

最後にGitHubにgit force pushします。
git force pushは使いたくない場合は、GitHubに新しくリポジトリを作ってそちらにpushしてもいいかと思います。

ここまで終えたら、コントリビューションを確認します。
無事草が生えていたら喜びましょう!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1