また久しぶりの更新になりました。
個人的な話ですが、4月から娘が保育園に通うことになり、育休からついに仕事復帰します('ω')ノ
が。
1年3か月もの間、エンジニアの仕事から遠ざかっていたために、IT知識がごっそり抜けてしまった…w
ということで今回は、今更ながらGitの基本的な知識についてまとめてみます。(文字通り基本的な内容しか扱っていません)
もくじ
1.Gitとは
2.リポジトリ
5.補足
1.Gitとは
そもそもGitとは、バージョン管理の概念である。
世界中で、主にプログラムソースコードファイルの管理などに使われている。
Gitの管理下にディレクトリやファイルを配置し、更新していくことで、
・いつ(When)
・誰が(Who)
・どのファイルのどの箇所(Where, What)を
・なぜ(Why)
・どのように更新(新規作成・変更・削除)したか(How)
という、5W1Hの更新履歴が記録されていく。
なお、Gitはあくまでバージョン管理の概念であり、
Gitの概念をソフトウェアシステムとして使えるようにしたものに、
GitHubやGitLab、Bitbucketなどがある。
2.リポジトリ
Gitを使って作業するときは、2種類のリポジトリを使い分けることになる。
Gitでいう「リポジトリ」とは、ファイル/ディレクトリ本体や、それらの変更履歴データを入れておくハコのようなものだと考えればよい。
リポジトリの種類は以下の通りである。
種類 | 説明 |
---|---|
リモートリポジトリ | Gitサーバに配置された、データ原本の格納先となるリポジトリ。 |
ローカルリポジトリ | リモートリポジトリの中身を、自分の操作端末内に複製して作るリポジトリ。 複数人がデータを更新する場合は、それぞれが自分の操作端末にローカルリポジトリを作る。 |
これらリポジトリを用いた作業手順は、以下のようになる。
①リモートリポジトリからローカルリポジトリにデータを取り込む。
※リモートリポジトリを複製してローカルリポジトリを新規作成する。
または、リモートリポジトリから、他の人の更新分(差分)を、既存のローカルリポジトリに反映する。
②各人がローカルリポジトリにて、データの更新作業を行う。
(ファイルやディレクトリの新規作成、編集、削除など)
③ローカルリポジトリの更新内容を、リモートリポジトリに反映する。
3.リモート⇔ローカル間での基本操作
リモートリポジトリとローカルリポジトリ間で行う操作(リモート→ローカルへの複製など)のうち、基本的な操作は以下3つである。
操作 | 説明 |
---|---|
クローン(clone) | リモートリポジトリの中身を、ローカル環境(自分の操作端末環境)に複製すること。 |
プル(pull) | リモートリポジトリの最新の更新内容(要はリモートとローカルの差分)を、ローカルリポジトリに反映すること。 |
プッシュ(push) | ローカルリポジトリで更新した内容を、リモートリポジトリに反映すること。 |
4.ローカルリポジトリ内での基本操作
ローカルリポジトリ内の更新内容を、正式に履歴として残すための操作を、コミットと呼ぶ。
Gitでは、ファイルやディレクトリを更新(作成・編集・削除)する毎に履歴が自動でつくわけではない。(もし更新毎に履歴がついたとすると、膨大な履歴が残り、履歴データが重くなるだけでなく、履歴を遡るのも大変になる。)
更新のキリのいいタイミングで、利用者が自ら、更新内容のメモとともに履歴をつけることになる。この、履歴をつける操作が、コミットである。
なお、Gitのどのソフトウェア・サービスを使うかにもよるが、更新内容のメモを添えるのは必須なことが多い。
「バグ×××の修正」や、「○○APIの仕様変更に伴う修正」、「設定ファイル△△の追加」などといったメモを残しておけば、
後から見返したときに、一目で何のための更新なのかが分かるので便利である。
※メモの書き方は、開発現場によってはフォーマットが決まっているため、それにならう。
5.補足
今回はGitの基本的な内容を扱った。
補足として、実際のシステム開発においては、今回紹介した操作内容に加えて、
以下のような対処が必要となったり、発展的な機能を利用することも多い。
・競合の対処(競合:他の人と更新箇所がかぶってしまうこと)
・ブランチ作成とマージ(履歴を分岐させ、各履歴を並行して記録していく操作)
・プルリクエスト(ローカルの変更内容をリモートに反映する前に、他の人に通知する機能)
内容薄いですが(^-^; 今回は以上!