【GitHub】やりがちなミスの対処法(commit編)

はじめに

この記事の概要

こんにちは、株式会社TOKOSのたくまです!

webアプリ作成時にはGitHubの利用は必須ですが、たまに以下のようなミスをしてしまうことはありませんか?

  • commitメッセージを打ち間違えた!
  • 間違えた内容をcommitしてしまった!  

特にプログラミングを学び始めて間もない方は上記のミスをしがちだと思います。
実際に私もよくミスして慌てていました、、
間違えたcommitをしてしまった場合でも、対処法を知っていれば慌てることはありません。
そこで今回は、GitHubの操作で初学者の方がやりがちなミスの対処法(commit編)を紹介します!

対象読者

  • GitHubを使用してwebアプリを作成している方
  • GitHubcommit操作を間違えて対処法を探している方

基本的なGitHubでの操作は以下のサイトが参考になります。

githubでのミスと対処法

commitメッセージを打ち間違えた

commitメッセージを打っている途中でenterを押してしまったり、誤変換したままcommitしてしまった場合に使える対処法です!

git commit –amend(※ amendの前のハイフンは2つなので注意してください)

commitメッセージを打ち間違えた場合は上記のコマンドを使用しましょう。
このコマンドを使用すると下の画像のような画面になります。

1番上に表示されているのがcommitメッセージになります。
今回はこれを修正していきましょう。
手順は以下のようになります。

  1. iを押して挿入モードにする。
  2. メッセージを修正する。
  3. escを押してモードを戻す。
  4. :wqで内容を保存する。

詳しく説明してきます。
まず、先程の画面はvimになるので、通常と操作方法が異なります。
上記の画面のままでは、メッセージの編集ができないので、キーボドでiを押して挿入モードにする必要があります。
なお、vimの基本的な操作方法は以下のサイトが参考になります。

iを押した際の画面は以下のようになります。

画像の下部のように– INSERT –と表示されていれば挿入モードになっています。
これでメッセージの編集が可能です。
メッセージを修正したらキーボードでescを押して、モードを戻しましょう。
その後、:wqで内容を保存してvimを終了します。
修正後は内容が反映されていることをgit logコマンドで確認しましょう。


commit内容を間違えた

commit内容を間違えた場合は以下の2つの方法で対処することが可能です。

  • git reset –soft HEAD^(※ softの前のハイフンは2つなので注意してください)
  • git revert commitメッセージのid

まず1つ目が上記のgit reset –soft HEAD^です。
こちらは直前のcommitを取り消すことが可能です。
先程の例で使用してみます。
まず、git reset –soft HEAD^を使用する前のlogがこちらです

ここからgit reset –soft HEAD^使用すると以下のように一番上のcommitが取り消されます。

これで、間違えた内容のcommitを取り消すことが出来ました。

もう1つの方法がgit revertの使用です。
こちらは特定のcommitを打ち消すことが可能です。
打ち消すというイメージを具体的に説明します。
例えば以下のようにA~Cまでのcommit履歴があるとして、Bの内容を打ち消したいとします。

コミット履歴(A〜C)
A--B--C
          

その場合は、git revert Bと打ちます。
そうすることで、commit履歴は以下のようになります。

コミット履歴(A〜C)
A--B--C--B'
          

上記のB’というのは、Bの内容を削除する内容のcommitになります。
このようにすることで、実質Bの内容を取り消すことが出来ます。

実際の例で使用してみます。
commitには画像のようにそれぞれIDが割り振られています。

git revertを使用する際は、このIDを指定することで特定のcommitを打ち消すことが出来ます。
ターミナルでgit revertを使用するとvimが立ち上がります。

一番上のメッセージがgit revert後に作成したcommitに付与されるcommitメッセージです。
必要に応じて編集してください。
編集後は先程と同様に内容を保存しましょう。
保存後、logを確認すると以下のようになります。

間違ったcommitは残されたまま、その内容を打ち消すcommitが作成されていることが分かります。
これで一連の流れは完了です。

紹介した2つの方法の使い分けですが、直前の内容を取り消すだけであればgit reset –soft HEAD^の方が必要な操作も少なくて分かりやすいかと思います。

おわりに

今回はGitHubでやりがちなミスの対処法(commit編)を紹介しました!
ミスしてしまった際は焦りますが、修正方法は意外と簡単ですぐに対応できるかと思います。
今後はpush編なども紹介できればと思っていますので、ご期待ください!
また、GitHubの使い方をもっと学びたいという方は以下の書籍がおすすめです。
基本的なGitHubの使い方を実際に手を動かしながら学ぶことができるので、初心者の方でも理解しやすいです。
GitHubの参考書で迷ったらこの書籍を選べば間違いは無いです!