ハックガールズと学ぼう!ゼロから学ぶGit講座

第5回 Git操作をなかったことにする!

この記事を読むのに必要な時間:およそ 2 分

皆さん,こんにちは!

エンジニアアイドル「ハックガールズ」の堤沙也と濱ヶ崎美季です。

私たちと一緒にGitを学ぶこの連載,第5回は,誰もが一度は経験する

「今のGit操作をなかったことにしたい!」

という思いを実現するためのコマンドを紹介します。

元に戻したい!

第4回まででGitの基本的なフローは大まかに理解できたかと思います。

Gitの使い方に慣れてきて,流れるようにコマンドを打っていると,うっかり意図しない変更を進めてしまうことを,誰しも一度は経験するのではないでしょうか。

そんな「今の変更はなかったことにしたい!」⁠昨日の更新はなかったことにして,一昨日の状態に戻したい!」といった思いを叶える方法が,Gitにはたくさんあります。

さまざまなコマンドのうち,代表的なものを紹介していきます。

今回紹介するコマンドは次の通りです。

  • git clean
  • git checkout
  • git revert
  • git reset(--hard / --soft)

作業ディレクトリを元に戻したい!

上司:
今追加してもらってる機能,表示用の画像を追加してくれないかな?
あなた:
それならすぐできるので,対応しますよ! 画像を作業ディレクトリに上げて……
(1分後)
上司:
やっぱりさっきの追加画像,なくて大丈夫!
あなた:

このように作業ディレクトリで何らかのファイルを新規作成(追加)した際に,Git管理対象とする前に,それらのファイルを作業ディレクトリから削除するコマンドを紹介します。

git clean

touch sample.txt
git clean -n (削除対象のファイルの確認)
git clean -f sample.txt

これでsample.txtは削除されます。

-fオプションのあとにファイルを引数で指定しなければ,-nオプションで確認したすべてのファイルが削除されます。Git管理下にないファイルの削除なので,復元はできないので慎重に!

図1 git clean -f

図1 git clean -f

illustration by Youko Watanabe

git addを戻したい!

上司:
今追加してもらってる機能,表示文言だけ修正してくれないかな?
あなた:
それならすぐできるので,対応しますよ! sample.txtの文言を修正して git addと……
(1分後)
上司:
やっぱりさっきの修正なくて大丈夫!
あなた:

続いては,作業ディレクトリで何らかのファイルに変更を加え(新規作成でも同様)⁠git addしたあとに,それらの変更を元に戻すコマンドを紹介します。

git checkout

git checkoutは第4回でも紹介しましたが,コマンドの引数として渡す値によって異なる動きをします。

最初は混乱するかもしれませんが,覚えてしまうと大変便利なので,是非抑えておきましょう。

前回は,

git checkout(branch)

でブランチの移動コマンドとして紹介しましたが,ここでの用途は,一度git addしてステージングエリアに上がったファイルを作業ディレクトリに引き戻すために使います。

たとえば,

touch sample.txt
git add sample.txt
git checkout sample.txt

このようにコマンドを実行すると,途中でsample.txtをgit addした事実はなかったことになります。sample.txtがあらかじめ存在するファイルで,その中身を書き換えていた場合,書き換えた事実もなかったことになります。

図2 git checkout

図2 git checkout

illustration by Youko Watanabe

著者プロフィール

堤沙也(つつみさや)

早稲田大学政治経済学部卒業。ハックガールズ・パズルガールズでの活動を経て,都内のWebサービス全般を扱う企業にてWebアプリケーションやスマートフォンアプリの設計・開発を担当。主に扱っている言語は,Ruby,Python,PHPなど。


濱ヶ崎美季(はまがさきみき)

立命館大学国際関係学部卒業後,大手外資系SIer企業に入社。ハックガールズ・パズルガールズ・クエスチョンでの活動を経て,現在は株式会社SCRAPのIT・広報担当として勤務。最近は編集部上がりの厳格な先輩(コンパイラ)の下で日本語の文法と格闘中。

Twitter:@HUMMER_Q

コメント

コメントの記入