git入門
gitて何?
gitは、バージョン管理システムの名前です。
コードの変更履歴をうまく保存しておいてくれる便利ツールです。
ここでは、herokuで必要な最低限のgitコマンドだけご紹介します。
gitのインストール方法やもっと詳しく知りたい方は、サルでもわかるGit入門が分かりやすいかと思いますので、そちらを参考にしてみてください。
おさえておきたい”リポジトリ”という概念
gitでは、ファイル毎に大きく4つの状態があると考えてください。
それが、リモートリポジトリ、ローカルリポジトリ、(ローカル)インデックス、(ローカル)ワークツリーです。
-
- リモート/ローカル
- その名の通り、リモートは通常自分のPC以外の場所のことです。有名なところではgithubがそれにあたります。
ローカルは自分のPCまたは、コードを編集している場所を指します。
-
- リポジトリ
- gitでまとめて管理しているファイルのかたまりだと思ってください。railsの場合は通常、アプリのプロジェクトフォルダ毎に管理します。
リポジトリは、リモートとローカルにそれぞれ存在します。
リモートリポジトリはいわば聖域で、複数人で共有する場合はこれがマスターデータとなります。
リポジトリの状態にあるファイルはどれも完成された1つの作品です。
-
- ワークツリー
- ばりばりコードを編集している状態のものです。
編集しているだけではリポジトリにあるファイルには反映されないため、変更点(差分)を確認したり、どれだけ壊しても元の状態に戻すことができます。
-
- インデックス
- ワークツリーで編集したものを一時保管している状態のものです。
ここでもまだリポジトリには反映されていません。ワークツリーとは別に、コードの変更をよけて置いておけるところ、という位置づけです。
このインデックス状態の使い方は様々あるようですが、とりあえずは編集したファイルをリポジトリに反映するために通過するものぐらいに思っておいて大丈夫です。
最低限必要なコマンド
一人で作るアプリの場合、最低限必要なコマンドは以下の6つです。
- init : git管理するための初期設定を行います。
ターミナル上の、git管理したいフォルダ内で実行してください。
- diff : リポジトリとワークツリーの差分を見ることができます。(コード行単位、インデックスを含まない)
ただし、ファイルの削除、追加の差分は見られません。また、インデックスの状態は確認できませんので、注意が必要です。
- status : リポジトリとワークツリーの差分を見ることができます。(ファイル単位。インデックスも含む)
ここでは追加、削除したファイルも表示され、どのファイルがインデックスの状態にあるかも見ることが出来ます。
- add : ワークツリーにある差分をインデックスへ移動させます。
このとき、addの後ろにオプションをつける必要があります。
削除以外のすべての編集を移動する場合
削除を含む全ての編集を移動する場合
- commit : インデックスに置いた差分をリポジトリへ登録します。
この変更履歴を登録する際に、その差分が何であるかのコメントをつけなければいけません。
$ git commit -m "ここにコメントを入れる"
- push : ローカルリポジトリからリモートリポジトリへ変更を登録します。
通常、リモート先の登録が必要ですが、herokuへloginができていれば下記のコマンドだけで大丈夫です。
知ってるとうれしいコマンド
- log : commitしたときのコメントと共に変更履歴とcommit番号を見ることができます。
$ git log
commit fc1b3f272a3713b7b482425b587ef129d76e2703 #コミット番号
Author: authorname <*****@gmail.com> #コミットした人
Date: Sat Sep 22 09:11:27 2012 +0900 #コミットした日時
added accosiation and modified view at books/index #コミットコメント
commit cd995e23fa42f3c148e0386bf1a57083f467175b
Author: authorname <*****@gmail.com>
Date: Fri Jun 22 00:07:53 2012 +0900
homework done.
commit bdfe253005e741afc310c879a202e9ee51069cfa
Author: authorname <*****@gmail.com>
Date: Sat May 19 12:05:36 2012 +0900
scaffold table-Book
・・・
- reset : commitしたけどやっぱりその変更を取り消したいという場合に使えます。
取り消しの仕方はいろいろありますが、新しいものから順に、あるcommitまでを全部取り消したければ、残しておきたい最後のcommit番号を指定して実行します。
$ git reset --soft コミット番号(最初の8文字ぐらいでOK)
例)上記の最後のコミット”added accosiation and modified view at books/index”を取り消したい場合。
$ git reset --soft cd995e23f
- pull : リモートリポジトリの内容をローカルリポジトリへ反映させます。pushの反対です。
リモート1つ、ローカル1つでは特に必要ありませんが、一人でするプロジェクトでも複数PCを使用する場合には、これを使ってそれぞれのPCにコードの変更を反映させることができます。
herokuからpullすることはありませんが、紹介だけしておきます。
コマンドにはそれぞれオプションがあり、便利に使える方法がたくさんあるので調べてみてください
また、複数人で使う場合に必要なことや、ブランチという概念もありますので、それはまた次の機会に・・・
This work is licensed under a
Creative Commons Attribution-Share Alike 3.0 License
produced by Minami.rb