はじめに

・・・・・(カタカタカタ)
うーん、どれが最新のディレクトリだっけ・・・(カタカタ)
あー違う。。。




クマくん〜。
お昼ご飯行こうよ。
今日はマグロ丼が88円の日だから早く行かなきゃ。




サメさん。ちょっと待ってて欲しいんだ。
この後午後のMTGで使うプロジェクトの最新のバージョンを探してて・・・




あ、やっと見つけた!
よかった〜
ようやく安心したよ〜。
ランチ行こうか!!!




お、よかった!
でもだいぶ時間かかってたみたいだね。
どうしたの?




今走らせているプロジェクトがあるんだけど、色々修正できるように一定進んだら保存してたんだけど、どれが最新のものかわからなくなっちゃって。
探すの大変だったんだよ。




え、まさかGit使ってないとか・・・・?
そんなことあるかなぁ・・・?
ちょっとディレクトリ見せてごらん。




・・・・・
$ ls
sampleApp ver2.3 最新版 修正済2
sampleApp ver2.3 最新版 上司に見てもらう版
sampleApp ver2.3 最新版 修正
sampleApp ver2.3 最新版
sampleApp ver2.2
sampleApp ver2.0
sampleApp ver1.5 xxxxxxxxxを変更したところ
sampleApp ver1.2 上司に見てもらう版
sampleApp ver1.2
sampleApp ver1.1
sampleApp ver1.0




まさか、本当にGit使っていないね?




Gitってちょっと難しいイメージがあって避けてたんだよね。
なんとか把握できていたし。特に問題はなかったから。




今回はたまたま管理できていたとしてもギリギリっぽかったし、これからプロジェクトが進んでいったら管理しきれなくなるよ。
他の人が見た時にどのディレクトリがどの状態の時のディレクトリか分からないと思うし。




確かに・・・
Git使えるようになりたいんだけど、
ちょっと教えてくれないかなぁ・・・




もちろんだよ!
お昼食べながらでも話せるくらい簡単だから!
じゃあ早速マグロ丼のお店行きながら話そう!




やった〜!
すぐ準備するね。
前提




Gitインストールをしている前提で進めていくね。
できていない人は下の記事を参照して入れてから先に進んでね。
Gitで管理するメリット
- バージョンの管理が楽になる機能が充実している。
- 分散型のバージョン管理システムだから自由に弄れる。
- 何より軽い・早い!




バージョンの管理が楽になる機能が充実している。




これなんだけど、具体的にはどういう機能があるの?




Gitの機能の一部でしかないけど、少しあげるね!
①タイムマシンで過去の履歴に簡単に遡れる
②こんなことがあったよ!って印をつけておくことができる。
③簡単にコピーを作っておくことができる。
④複数人で開発する時に生じがちで一番大変な同じコードを編集しちゃった時簡単に修正ができる。




一部だけでもこんなに機能があるんだ!
すごい便利そう!!




全部の機能を使いこなすのは大変だと思うから、自分に必要な機能だけ使って行くのもありだよ!
分散型のバージョン管理システムだから自由に弄れる。




分散型ってなに??




Gitが開発される前まではコードを1つのサーバー上に置いていて、アクセスするのに権限が必要だったり、ネットワークの接続が必要だったんだ。
クマくんも会社の共有フォルダに入れているでしょ?




うん、そうなんだよね。




そのファイルって編集するのに権限もらわなきゃいけないよね?
多分自分のPCに一回コピーして落として編集してから会社の共有フォルダに入れていると思うんだけど。




Gitみたいな分散型のバージョン管理システムだとまさに同じ動きをシステムで管理できるんだ。
自分のPCにバージョン管理用の倉庫(リポジトリ)を作れて、自分の権限で自由に編集やコピーができるから申請をもらう手間も必要なく気軽に操作できるんだよ。
何より軽い・早い!




そういうシステムって重たいイメージがあって使いたくないんだよね。
僕の支給されているPC10年前のだから・・・




さ、流石にもうちょっと新しいやつにしてもらったほうがいいんじゃない?




一旦それは置いておいて、実はGitってサーバーを立てて動かしているわけじゃないからめちゃくちゃ軽いんだ。
それぞれのコマンドの動作なんて1秒もかからないんだよ。
全然メモリを消費しないから安心して!




そうなんだ!
ちょっと触りたくなってきたなぁ。




よし、じゃあGit操作の方法をレクチャーしよう!
リポジトリを作る! git init




まずは魔法の呪文。
『git init』
だ!




これはどういうコマンドなの?




簡単に説明すると、そのディレクトリにGitのリポジトリを作るコマンドだよ。
1個のGitディレクトリが作成されたってことなんだけどね。
ここからGitで管理する道が始まるんだ。




Gitディレクトリ?
ちょっと分からない単語が出てきたなぁ。




そうだね。
ちょっと最初の方はなれないかもしれない。
ひとまず、GItでバージョン管理をするため準備で必ず行わなければいけない作業だから覚えておいて!




初心者の人は
「自分がGitでバージョン管理したいディレクトリにいる状態でgit initする。」
だけは忘れないでね!




分かった。
自分がGitでバージョン管理したいディレクトリに移動しておかなきゃいけないんだね!
リポジトリにファイルをぶち込め! git add




git addはさっきgit initで作ったリポジトリにこれまで変更してきたファイルを追加するためのコマンドだよ。




addって英語のまんまの意味ですごいわかりやすいね。




そうだよね!
初心者の人ってgit addのことよく分かっていない人が多いんだけど、git addの根本的にやっていることは、
「これからこのファイルをずっと追跡してね!」
ってお願いしているんだ。




追跡?




イメージとしては秘書をつけるに近いかな。
何か変更点があったらすぐに報告して欲しいから、常に見張ってて欲しいと頼むコマンドなんだ。




なるほどなぁ。追跡してねってお願いするのか。
追加って意味って聞いてリポジトリに保存するのかと思ってったよ。




保存するっていうニュアンスは次のgit commitなんだよ。
次の項目で説明するね!




Gitのリポジトリっていうのは正確にいうと、
待合室のようなイメージのステージングエリアと
リポジトリ層の2段階に分かれている。
ステージングエリアにあるファイルをcommitすることでリポジトリに保存しているっていうことになるんだ。
だから、まずファイルをステージングエリアに置かないといけないんだよ。
git addしたあとはずっと秘書が付いていてくれて、変更点があったら変更点分をステージングエリアに上げるか聞いてくれるようになる。




なんとなくイメージすることができた気がする。
まずはgit addで秘書に付いてもらえばいいんだね。




素晴らしい!
そういうこと!
リポジトリにファイルを登録せよ! git commit




git commitはgit addで追跡対象になっているファイルがあったとして、そのファイルに変化があったときに、変更点の部分だけリポジトリに保存させるコマンドだよ。




さっき話していたステージングエリアにあるファイルをリポジトリに登録するってことだね!




なんか掴めてきた気がする!




その通り!
git commitしないと履歴に残らないから最後まで忘れないようにね!
リポジトリの状態どうなってる? git status




git statusはもし自分が今どこまでadd or commitしてきたか分からなくなった時に使うコマンドだよ。




これもstatusっていう英語のまんまのイメージかな。
状態を確認するってこと?




その通り!
具体的には
①git addされていないファイル
②git addされているけどgit commitされていないファイル
を出してくれるんだ。
これまでの変更点は? git log




git logコマンドはgit commitされた履歴を見ることができるんだ!




ログを確認するってことだもんね!




その通り!
簡単でしょ!!
終わりに




よーし、覚えた!
Gitで管理するときは
①init
②add
③commit
の順でいいんだね!




その他にも状況を確認する
・git status
・git log
があるからね!




まずは基本のコマンドを使いこなして、 Gitの世界に慣れよう!