たまになってしまって困ったときの対処法をまとめます。
※そうなっちゃう運用が悪いとかいう話は一旦おいておきます...
ブランチを移動し忘れて、コミットしてしまった
git cherry-pick
でコミットするべきだったブランチへコミットを引っ張ってくる
$ git checkout good_branch # コミット対象だったブランチへ移動
$ git cherry-pick bad-branch # 間違えたブランチからコミットを引っ張ってくる
$ git checkout bad_branch # 間違えたブランチへ移動
$ git reset --hard HEAD^ # 間違えてコミットを削除
cherry-pickは
コミットIDが変わって後々マージする時などにリジェクトされたり被ったりすることがあげられるそうです。
(iKenjiさんからコメントにて情報いただきました!)
そのようなことが起こりそうなときにには
git reset --soft head^ → git stash
でコミットも別ブランチへ持っていく
# bad-branchにいる
$ git reset --soft head^
$ git stash
$ git checkout good-branch
$ git stash pop
addをし忘れてコミットしてしまった
git add で対象ファイルをindex登録した後、
git commit ---amend で修正コミットを行う
$ git add app/funciton/forgottenFile # 登録し忘れたファイルをindexへ追加
$ git commit --amend # 直前コミットの修正コミット
コミットメッセージでタイポしてしまった
git commit ---amend で修正コミットを行う
$ git commit --amend # 直前コミットの修正コミット -> editorが起動し修正、コミット
間違えてマージしていないブランチを消してしまった / git reset --hardで戻しすぎた
git reflog で過去のコミット履歴を確認(GCされてたら太刀打ち出来ない)
git reset --hard HEAD@{番号} で戻す!
$ git reglog # 過去のコミット履歴を確認
291612f HEAD@{169}: commit: レビュー反映
1ebcd23 HEAD@{170}: commit: レビュー結果を反映
aef929d HEAD@{171}: commit: お気に入り追加ボタンの修正
f4d3e4c HEAD@{172}: pull origin master: Merge made by the 'recursive' strategy.
58530d7 HEAD@{173}: checkout: moving from 121228_local to master
144f684 HEAD@{174}: checkout: moving from master to 121228_local
58530d7 HEAD@{175}: clone: from https://example.git
$ git reset --hard HEAD@{170} # 番号を指定し、その部分まで戻れる
うっかり別の人がgit config設定済のOSユーザでコミットしてしまった
コミットログが自分ではないユーザになってしまった時の修正方法です。
参考: Git の Commit Author と Commiter を変更する
git configで usernameとemailを修正
git commit --amend --author でAuthorを修正
git_config修正
$ git config --local user.name naotokishino
$ git config --local user.email naotokishino@example.com
author修正
git commit --amend --author="naotokishino <naotokishino@example.com>"