一人しか操作する人間がおらず、複数端末で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 fetch
git 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