Git入門 ~リポジトリ作成・コミット編~
これが初投稿になります。
さて、早速ブログ制作をしよう!!
......と思ったのですが、その前に勉強しなければいけない(厳密にいうと勉強したい)ことがありました。
そうです。Git です。
お前.....、プログラミングやってるとか言って、Git知らねーのかよ......。
すみません、知りません......。
というのも、Gitの存在は知っていたのですが、正直今までは一人で制作してきたので、特に必要なかったんですよね笑。
まあ、あれば便利だったでしょうけど。
ただ、インターンを始めてから、チーム作業においてのGitの大切さというものを心から思い知りました。
というわけで、少しの間はGitについて勉強しようと思います!
それから、もちろん独学ということになるのですが、参考書なしではできません。
(オンラインサイトでの学習という手もありますが、僕は参考書のほうが勉強しやすいです)
というわけで、いろいろ調べた結果、以下の参考書にしました。
なんだこれか。
そうです、これです。
いつもは立ち読みして参考書を決めてるのですが、これが一番わかりやすそうでした。
元の著者が外国の方ということもあって少し日本語がおかしいところもありますが、それでも分かりやすいです。何より、丁寧です。
著作権法に引っ掛かりたくはないので、これを読んで理解した僕がこのブログにメモ帳みたいな感覚でアウトプットしていこうかなと思っています。
さあ、本題に入ります。
まず、Gitとはいったい何なのでしょうか?
Gitは、分散型バージョン管理システムです。
これだけだとよくわかりませんね。
分散型とは、1つのサーバではなく、ローカル(個人のPC)でシステムを扱うことができる仕様ということです。
バージョン管理は、まあなんとなくわかるかもしれませんが、例えばあるプロジェクトが完成したとします。しかし、もっと改良したい!ということで、改良に取り掛かろうとしますが、現在運用しているプロジェクトを編集してしまったら、運用が停止してしまいますよね。それに、編集中に後戻りしたくなってもできませんね。
僕も最初はプロジェクトごとコピーすればいいじゃんと思ってて、コピーしながらプロジェクトを作成してたのですが、うまく整理されないし、あんまりスマートじゃありませんね。
そこで活躍するのがバージョン管理システムというわけです。
まあ、とりあえず触ってみましょうか。
コンピュータの勉強をするときは、実際に動かしながらのほうが覚えやすいし、慣れやすいですからね。
<<リポジトリ作成編>>
まず、リポジトリを作ってみます。
リポジトリとは、バージョンを管理するためのディレクトリみたいなものです。
リポジトリにファイルをコミットすることで、Gitがそのファイルを管理してくれます。
ここで重要なのが、リポジトリはローカルオンリーということです。
言い換えると、皆さんのPCに自由に作れるものであり、極論いうとインターネットに接続しなくてもGitを扱えるということです。
これが、いわゆる分散型の良いところですね。
では、Git Bashを開いてコマンドを入力してみましょう。
言い忘れてましたが、Gitはインストールしてある前提で話を進めます。
<リポジトリ作成>
① mkdir sample
② cd sample
③ git init
まず、sampleという名前のディレクトリをどこでもいいので作り、そこに移動しましょう。(①②)ここら辺はLinuxの基本ですね。
では、sampleディレクトリにリポジトリを作りましょう。(③)
そうすると、Initialized empty ~~と出てくると思います。これで、リポジトリを作れました!
超簡単ですね。
実際、隠れディレクトリとして .git というディレクトリが現れたかと思います。
これがGitの正体です。
[リポジトリ作成]
おそらく、sampleの横に(master)という文字が現れたと思いますが、これについては後々説明します。
<<コミット編>>
さて、リポジトリが作れるようになったので、次は実際にファイルをコミットしてみましょう。
<コミット>
① echo "sample" > sample.sh
② git add sample.sh
③ git commit -m "Commit sample"
まず、sample.txtというファイルを作ります。(①)今回はsample.shの1行目に"sample"という文字列を書くことにしました。
次に、ステージングエリアにsample.shを加えます。(②)ステージングエリアというのは、コミットする前の準備段階の場所ということですね。ここでコミットする前の最終確認なんかもします。整理すると、順番的には
Current Directory --> Staging Area --> Commit
というイメージですね。
最後にコミットします。(③)-mの後のダブルクオーテーションはコミットする際のメッセージの内容です。本当は何をコミットしたかわかりやすいように記述するのが普通ですが、今回は練習ということでテキトーにします。
[コミット画像]
こんな感じでコミットが完了しました。
ここでもう一つ重要な項目を説明します。
上の画像の中に「beadfff」というアルファベットの羅列があると思いますが、これはSHA1 IDというものです。(僕のPCではこのように表示されましたが、この値はひとそれぞれです)
SHA1という暗号化アルゴリズムによって作られたいわゆる乱数みたいなもので、同じIDはこの世に存在しません。(厳密にいうと違いますが、それだけ同じIDが生成される確率が低いということです)
これは、コミット履歴を辿るときなどに便利なものなのでしっかり覚えましょう。
追加で便利コマンドを紹介します。
● git status
現在の状態を表示するコマンドです。今何がコミットされてないか、今何がステージングされてないかを見ることができます。
● git log
今までのログを見ることができます。後ろに--onelineをつけると、省略された形で表示されるので見やすくなりますよ。
● git diff
カレントディレクトリとリポジトリ(ステージングエリア)とでファイル内容に差があれば、その差を出力します。ステージングエリアとコミット先との間の差を見たければ後ろに--stagedをつければ見れます。
今日は疲れたのでこの辺にしましょうか。
実際、僕が記載しているのはGitの基本的なコマンドだけなので、guiなどを触りたい人は実際に参考書を買って自分で動かしてみるのが一番かと思います。
次回はブランチ、チェックアウトを中心に書きたいと思います。