今回は、Gitについて解説していきます。
目次
Gitとは
プログラミングをしているとデータが飛んでしまったり、ある程度前の状態に戻したいことがあります。
共同で開発しているなら、なおさらです。
いつの間にかバグが発生して、誰が実装した所か分からないと非常に困ります。
そうならないためにGitが使われます。
Gitとはプログラミングのファイルの状態を保存して置ける倉庫のようなものです。
ゲームのセーブのようなもので、セーブした状態に戻ることができます。
これにより、誰が実装した所からバグが発生していたかなど直ぐに分かります。
つまり、開発プログラムのファイルを前の状態(保存した時)に戻せたり、最新の状態を共有できる便利なシステムです。
GitとGitHubの違い
Gitを調べるとGitHubやGit〇〇と似たようなサービスが出てきます。
これらサービスとGitの違いを説明します。
Gitとはプログラミングのバージョン(状態)を管理するシステムで、GitHubはGitを利用したWebサービスです。
これはメールとGmailの関係と同じで、Git(メール)と言うシステムを便利に使うためにGitHun(Gmail)と言うWebサービスがあります。
ここで少しGitとGitHubの役割について説明しておきます。
GitHubはクラウド上でGitを使ったバージョン管理ができるサービスです。
つまり、みんなが預ける倉庫のようなサービスです。(もちろんGitでも同じものがありますが、GitHubはそれを便利にしたもの)
Gitの役割は、保存するファイルの選択・自分のPCにそのバージョンを保存・GitHubに保存したものをアップロードすることです。
Gitの仕組み
まずは、重要な用語の確認です。
リポジトリ
リポジトリとは、ファイルやディレクトリの変更内容(バージョン)を保存して置く所です。
それを取り出すことで、共同開発者に最新の状態を共有したり、バグが発生する前に戻せたりします。
つまり、倉庫のようなものです。
リポジトリには2つ種類があります。
リモートリポジトリ(GitHub)・・・サーバー上でプログラムのバージョンを管理
ローカルリポジトリ(Git)・・・自分のPCでプログラムのバージョンを管理
リモートには全開発者が更新していった情報が保存されていき、ローカルには各開発者の更新情報だけ保存されます。
画像は2人で開発した場合の様子です。
コミット
(ローカル)リポジトリにプログラムのコードを保存するための操作です。
リモートリポジトリにアップロードする方法は別にあります。
これはローカルのみの操作です。
トラッキング状態
簡単に言うと、コミットするファイルを選択した状態のことです。
トラッキング状態になったファイルは、ステージング領域に保存してあります。
Gitの設定
Gitを使うには、まずGitの設定を行わなければなりません。
ターミナルを起動し、次のコマンドで名前とメールアドレスを設定します。($は打ちません)
$ git config --global user.name ”名前”
$ git config --global user.email ”メールアドレス”
ちゃんと設定されたか確認します。
$ git config -l
user.name=”名前”
user.email=”メールアドレス”
設定一覧で↑のように、名前とメールアドレスが表紙されれば、設定完了です。
Gitの使い方
Git init
このコマンドで(ローカル)リポジトリを作成します。
開発を行うディレクトリまでcdコマンドで移動し、次のコマンドを入力します。
git initは、このディレクトリ(現在地)をgitで使うと宣言する事と同じです。
$ git init
Initialized empty Git repository in /Users/(開発するディレクトリ名)/.git/
↑が表示されたら、制作完了です。
Git add
このコマンドで選択したファイルは、トラッキング状態になります。
git addできるのはファイルだけです。(ディレクトリはできません)
- $ git add "トラッキング状態にしたいファイル名"
- $ git add .
1の方法は、トラッキング状態にしたいファイルが選択でき、2の . (ピリオド)は現在のディレクトリ配下のファイル全てをトラッキング出来ます。
Git commit
このコマンドで、(ローカル)リポジトリにコードを保存できます。
$ git commit -m "コミットメッセージ"
このコミットメッセージは、どのような変更をしたか、後で見直したときや他の開発者にも分かりやすいように名付けましょう。
宅配に例えると、git addで箱詰めした箱を、git commitでその箱に名前を付けて家の倉庫に保存して置くイメージです。
Git log
このコマンドは、コミットしたファイルや履歴を確認できます。
画像のように表示されれば、コミット出来ています。
↓の画像は、先にtechboost github taskと言うコミットメッセージのコミットをしてあり、一番新しくagainと言うメッセージのコミットしたことを示しています。
GitHubでリポジトリを作成
いよいよクラウド上(リモートリポジトリ)でバージョン管理を行います。
まずは、GitHubに登録を行います。
登録したら、左側にあるRepositoriesのnewで、その開発で使うリポジトリを作成します。
GitHubに鍵の登録
ローカルリポジトリ(Git)からリモートリポジトリ(GitHub)にアップロードするには、「公開鍵認証」と呼ばれる鍵が必要になります。
この鍵は2つ出てきて、
アップロードするための鍵を「公開鍵」と言い、この公開鍵を復元するファイルを「秘密鍵」と言います。
GitHubにアップロード
公開鍵を接続したら、ローカルリポジトリからGitHub(リモートリポジトリ)にファイルをアップロード出来ます。
↓のコマンドはローカルリポジトリとGitHubを利用する時に必ず行います。
$ git remote add origin git@github.com:アカウント名/リポジトリ名.git
もし、違うリモートリポジトリにアップロードする時はもう一度行う必要があります。
↓のコマンドでコミットしたファイルをアップロードします。
$ git push -u origin master
画像のように表示されれば、アップロード完了です。
アップロードが完了したら、GitHubのリポジトリを確認しましょう。
Gitの一連の流れ
Gitの流れを宅配に例えて解説します。
step
1git init = 家に倉庫を作る
自分のPCにローカルリポジトリを作成します。
step
2git add = 箱詰め
保存するファイルを選択します。
step
3git commit = 伝表を貼り、家の倉庫に保存
保存したファイルがどのようなファイルなのか名前をつけ、ローカルリポジトリに保存する。
step
4git push = 大型倉庫へ移動・保存
ローカルリポジトリからリモートリポジトリにデータを移動させます。
エラーが出た時
まず、エラー文をGoogle翻訳にかけて、どのようなエラーなのか必ず確認しましょう。
自分も最初は面倒であまりやっていませんでしたが、Gitは優しい英文で書かれているので、Google翻訳でも十分意味はわかります。
次に、addやcommitしても反応しない時は、git logとgit statusでちゃんと現状を確認しましょう。
Gitは本当に優しく、git statusのコマンドを実行すると、次に何をすればいいか指示してくれます。
↓の画像の「use "git add <fire>・・・」と「use "git checkout -- <fire>・・・」は、git addとgit checkoutが実行できることを表しています。
そして、ディレクトリ⇄ストレージ(トラッキング)⇄ローカルリポジトリの関係性をしっかり理解しておくことです。
私は、ローカル環境(vagrant)で作っていたリポジトリを、Cloud9で作ったものと勘違いし、しばらく考えていました。
最後に
Git、GitHubのおかげで助かった人はたくさんいると思います。
しかし、使い方を間違えてしまうと個人や会社に多大な被害を出してしまうので、しっかり勉強しておきましょう。
実際に私もプログラミングスクールに通ってエンジニアになりました。
興味がある方は、こちらの記事をご覧ください。