【Gitコマンド】コミットをミスってしまっときの対応方法
※自分用メモ
先日コミットミスをした。。。
内容としてはpull
せずにpush
しようとしたせいだった。。。
で、「pullしろ」って指示が書いてあったので
そこからpull
しようとしたら
Merge branch 'master' of ssh://... merge made by 'recursive' strategy
と返ってきた。。。。
これは何かというと
「最新のマスターを自分おブランチにマージした」というログで、
自分の修正がpull
したmasterブランチの最新の修正よりも前だったら
返ってくるコミットメッセージである。
そこで、git log
を見てみると。。。ログが2つ追加されている。。。orz
こういう時はgit reset --hard HEAD^
で直前のコミットを取り消してから
git fetch
してからgit rebase
を行い、ローカルを最新にしてから
またgit push
をする。
もう一つよくやるのは、
git pull
もちゃんとしたが、同じタイミングで誰かが
git push
をした場合にもエラーが返ってくる。。。
そんなときのメッセージが
hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
と何が起こったのか、と何をしたらいいのかを教えてくれる。
この場合はヒントに書いてあるように
git pull
するのだが、正確には
git pull <branch> --rebase
である。
これはgit pull
のオプションで「--rebase オプションをつけてプルしたほうがマージコミットが作られないし履歴がキレイさっぱりになるから」です。
※教えてもらった人を引用した