2016/06/15
gitの構築から実用までの流れ (1)
はじめに
gitの初歩の初歩について書き綴りたいと思います。
なんとなくイメージがついたら良いなぁという程度で、筆者も詳しい訳ではありません。
gitとは
システム開発において、複数人のチームで作業することはよくあることです。
このシステム開発でバージョン管理ツールを使うことにより、以下の様なメリットがあります。
- 他の人と並行して作業が出来る
- どのプログラム(リソース)等をいつ誰が、どの部分を変更したか把握が出来る
- リリースなど節目に際して、まとめて変更したシステムのみ反映できる
- システム(機能や細かい文言含め)を簡単に前の状態に戻せる
などなど。。
バージョン管理を行わないと、ファイルのタイムスタンプや
何かしらの情報管理によってリリースまで色々な作業が発生します。
(タイムスタンプも簡単に書き換えられてしまうリスクなどアリます)
これらを解決してくれるのがgitというツールです。
バージョン管理のイメージ
「いつ」「だれが」「どのファイルを」「どんな内容で」
変更したかという情報を貯蓄していきます。
この貯蓄する場所を「リポジトリ(repository)」と呼びます。
リポジトリには大きく2つに別れます。
- ローカルリポジトリ
- リモートリポジトリ
これらは必ずペアで存在しなければなりません。
例えば本番にリリースする場所がリモートリポジトリだったら、
それらを開発する各開発者の環境がローカルリポジトリとなります。
なので、基本的に貯蓄された情報は
ローカル → リモート
でなければなりません。
リモートリポジトリには
「貯蓄された情報のみを保存するリポジトリ」
を作るのが妥当です。
つまり
「公開するファイル群を置くリポジトリ」
と
「物理ファイルは無いけど、gitの貯蓄データを置くリポジトリ」
をサーバーに設けることになります。
下にある2つ(一つあるいは複数)のリポジトリは
実ファイルのある各開発者が作業している任意の作業ディレクトリです。
左上にあるリポジトリを通称
「中間リポジトリ(ベアリポジトリ)」
と呼び、いったんここに更新情報を送ります。
ファイルは生成されませんが、ファイルの中身の情報は存在しています。
その後、右側の公開用のリポジトリへ反映させるという流れとなります。
gitの構築 (git init)
実施するコマンド(命令)を順に追いましょう。
1 | git init |
まずはgit管理化に置きたいディレクトリに移動して上記を実行します。
中間リポジトリの場合は
1 | git init --shared --bare |
です。
概要は
「このディレクトリをgit管理のリポジトリとしますよ」
です。
中間リポジトリが異なるのは
「shared (複数のユーザーが使える)」
「bare (実ファイルを持たない)」
という点のみです。
複数人で開発しつつ
実ファイルを持たないことで情報のみのやり取りが可能となるのです。
次のローカルにて複製手順があるため、ローカルでのgit initは不要です。
ローカルに複製する (git clone)
1 | git clone サーバーのURL:リモートリポジトリのフルパス |
これでローカルにリモートと共有されたリポジトリの作成が完了です。
複製しただけで同期している訳ではありません。
ファイルの管理登録 (git add)
git管理配下の最上位ディレクトリ(以下git_root)にて
1 | git add バージョン管理したいファイルの相対パス |
を実施します。
これは
「このファイルをgit管理に入れる宣言」
です。
つまりリポジトリに登録されている訳ではありません。
(この時点では取消も可能)
ローカルリポジトリに更新した内容を登録する (git commit)
この時に、更新した必要な情報が貯蓄されます。
ですが、、その前に登録者である自分の情報を登録しましょう。
各開発者のローカル環境にて
1 | git config --global user.name "hoge" |
1 | git config --global user.email hoge@fuga.com |
のように必ず自分の情報を自分のリポジトリに保持しましょう。
この情報は繋がっている全てのリポジトリへ共有されます。
次に
1 | git commit -m 'コメント' |
幾つかやり方がありますが、簡易的なやり方では
上記のコマンドでコメントを入れることが可能です。
コメントは必須です。(空欄でも可)
ただし、これでもまだローカルに貯蓄されているだけで
他の開発者やリモート上では共有されていません。
リモートリポジトリに更新した内容を登録する (git push)
1 | git push master |
ここについては色々と状況によって変わる部分です。
初期状態であればmasterというブランチ (リポジトリが木なら枝とでも思っておいてください)
にひとつ前でcommitした内容を本登録しますよ、、といった意味合いです。
まとめ
ブランチ
という最後に出てきたワードが重要となってきます。
その他gitに関わるコマンドも含めて触れられたらと思います。
Author Profile
スターフィールド編集部
SHARE