[Git]間違ってCommitした時、pushした時に修正する(戻す)方法
Gitで開発をしていてCommit/pushした内容をなかったことにして戻したい時の方法です。
デバッグコメントが残っていてしまった場合など、わざわざ1行修正するために別のCommitとして残したくない場合など
1. 間違ってCommitした内容を取り消す方法(ソースコードはそのまま残す)
間違ってCommitしちゃったけど、pushはまだしていない場合に、戻す方法。
$ git reset --soft HEAD^
- "--soft"をつけると、現在のソースコードは変更せず、Commitしたという事実だけをなかったことにします
- "HEAD^"はどの時点までのCommit履歴を修正するかを示します。(この場合は一個前のCommitを取り消します。)
2. 間違ってCommitした内容を取り消す方法(ソースコード毎以前のCommitに戻す)
$ git reset --hard HEAD^
- "--hard"をつけると、ソースコードごと戻します。
- つまり指定したCommit後に変更した内容は消えます。
3. 間違ってpushまでしてしまった内容を取り消す方法
間違ってCommitして、かつpushまでしてしまった場合でも以下のコマンドで修正できます。
$ git reset --soft HEAD^ ###コードの修正等 $ git commit -a -c ORIG_HEAD #再Commit $ git push -f origin {ブランチ名}:{ブランチ名} #再push
1. まずは"git reset"でCommit履歴を戻します。
2. 次にコード等の修正をします
3. 修正が終ったら再commitをします。
- この時に"-c ORIG_HEAD"というオプションをつけると、以前使ったCommitメッセージを流用することが出来ます。
4. 最後にpushしなおす
- この時普通にpushしようとすると「なんかお前のローカルブランチ、タイムリープしてね?」って起こられます。
- "-f"オプションをつけることで無視して強制的(force)にpushして上書きします。
これで完了です。