【GitHub】push前の変更操作を取り消せるコマンドの紹介【3つの方法を理解しよう】
こんにちは、ちくたっく(@tictak_py)です。
今回は、GitHubにpushする「前」に使える変更操作を取り消すコマンドを「3つ」紹介していきます。
その3つの方法をまとめたものが以下となります。
- ワークツリー内での作業を取り消す方法
- ステージへの追加(git add)を取り消す方法
- ローカルリポジトリへの追加(git commit)を取り消して修正する方法
「変更操作を取り消す」全体的なイメージは以下の図のようになります。
いずれもローカル内の話であり、リモートリポジトリである「GitHub」にプッシュする前の操作となります。
こんな方に読んで欲しい記事です
- ローカル内での変更(git add/git commit等)を取り消せるようになりたい方
- GitHubで使われている基本的なコマンドを学んでいきたい方
【GitHub】変更操作を取り消す「3つ」のコマンド
【変更取消その1】ワークツリーの作業をなかったことにする
まず最初に、デスクトップ上に「github-basic」というフォルダを作成し、以下のようなテキストファイル「price_list」がある状態で話を進めていきます。
(ここでは理解しやすいようにテキストファイルを用いていますが、実際には自分が使うプログラミング言語で書かれたファイルを利用してみてください。)
ある製品に関する正規の価格表のような内容だと想定してください。そして、このファイルを「git add」してステージへ追加しておきます。
ここからが本題となります。
ある日、手元にある価格表の内容をなぜか間違えて以下のように書き直して保存していたことが発覚しました。
その場で間違いに気づけば「Ctrl + Z」で何とかなりますが、既にファイルを閉じていたような場合にはどうすればいいでしょうか?
このような場合に使える方法が「git checkout — <ファイル名>」のコマンドです。
このコマンドを入力し、テキストファイルの中身を確認した結果が以下となります。
上記のように、テキストファイルの中身が元に戻っているのがわかるかと思います。
「ステージに追加済のファイル」で「ワークツリーのファイル」を上書きしているようなイメージを僕は持っています。ステージのファイルと同じ状態にすることで、結果的に元の状態に戻している感じですね。
そのため、git addコマンドでステージに追加する前の状態で、テキストファイルの変更内容を取り消したいと思っても、以下のようにエラーとなり復元は出来ません。
そもそも作業フォルダ内の話ではありますが、「ファイルを間違えて修正して、元の状態がわからなくなった…」という場合でも、git addしていれば復元できる可能性があるので、知っておくといざという時に便利です。
【変更取消その2】ステージへの追加をなかったことにする
続いては、「git add」コマンドでステージに追加した後に取り消す方法を紹介します。
現在の状態を「git status」コマンドで確認しておきます。
すると、「コミットすべき変更があるよ」と言われているので、git add後ということがわかります。これを取り消すためには「git reset HEAD <ファイル名>」のコマンドを使用します。
上記画面の赤枠部分を確認してみると、ステージに追加済ファイルを対象にコマンドを入力することで、「git add」する前の状態になっていることがわかるかと思います。
ちなみにこのコマンドは「git status」時に表示されているコマンド(上図アンダーバー部分)のことです。
個人的に「git addした後に取り消したい」というニーズは少ないのですが、使い方を知っておけば何かあった時に使えるかもしれないので参考にしてみてください。
【変更取消その3】コミット操作を取り消して修正する
最後は、「git commit」コマンド操作を取り消して修正したい時に使える方法です。
「コミット時のメッセージを書き直したい」ような時にも使えます。
現在、取消操作によってunstageされているので、コミットまで一気に進めます。
コミット時に、間違えたメッセージ「item list」(正しくはprice list)を入力したとします。
このような時に使える方法が「git commit — amend」コマンドです。
コミット内容そのものを取り消すというよりは、ステージにあるファイルで上書きするイメージです。
このコマンドを入力すると、以下のようにコミットメッセージを入力する画面になります。「item list」となっていた記述を「price list」と修正して確定しておきます。これで修正OKです。
本当に内容が修正されているのか、プッシュをしてGitHub上で表示される内容を確認してみます。
すると、以下のように「price list」と修正後の内容が表示されていることがわかります。コミットメッセージを間違えてしまったとしても、プッシュしていない限りはこの方法で修正出来るので、慌てずに使えるようにしてみてください。
さいごに
今回は、GitHubにプッシュする前の変更操作を取り消すコマンドを「3つ」見てきました。いずれも知っておくと役に立つ時が来るので、いざという時のために使えるようにしてみてください。
記事内で出てきた「git status」については以下記事でも紹介しているので、今一つ理解出来なかった方は参考にしてみてください。
【GitHub】ファイル変更状況を確認する「status」コマンドの紹介
こんにちは、TAKです。今回は、Gitコマンドの一つ「status」について紹介していきたいと思います。 具体的には、ワークツリー(フォルダ)で作業したファイルをステージに追加したかを確認したい時や、ローカルリポジトリに追加したかを確認した…
では今回はこのへんで。