一人しか操作する人間がおらず、複数端末でPushするユースケースがほとんどのため、以下のことに留意する。
git rebase -iでコミットをまとめる。RemoteにPushしたコミットでも、まとめたほうが良いものがあればrebaseして綺麗にしておく。git fetch; git merge --squashの方が安全だが、どうせ個人でしか使わないので昔の履歴を追いやすい形にしておきたい。git checkout -B master origin/masterのようにリモートブランチと同期を取る。
git pullでリモートから取り込んだ時に余計なmergeコミットが発生した時git reset --hard ORIG_HEADでマージ前に戻すgit fetchgit rebase --iで確認しながら操作するgit push origin master下記の通りに一旦削除して、git submodule addしてあげればOK。
0. mv a/submodule a/submodule_tmp
1. git submodule deinit -f -- a/submodule
2. rm -rf .git/modules/a/submodule
3. git rm -f a/submodule
# Note: a/submodule (no trailing slash)
# or, if you want to leave it in your working tree and have done step 0
3. git rm --cached a/submodule
3bis mv a/submodule_tmp a/submodule
次のコマンドを実行すればOK。
git config --local core.quotepath false
環境全体に設定したい場合は、 --globalオプションを忘れずに。
git config --global core.quotepath false
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Hiroki Uchida'; GIT_AUTHOR_EMAIL='nikuyoshi@gmail.com'; GIT_COMMITTER_NAME='Hiroki Uchida'; GIT_COMMITTER_EMAIL='nikuyoshi@gmail.com';" HEAD
Git の Commit Author と Commiter を変更する - Qiita