そもそもGitとは、分散型バージョン管理システムのことを指します。
分散型バージョン管理システムとは、ファイルのバージョン管理を簡単に行えるツールです。
例えば、iPhoneなどアップデートを行うと基本的には元のバージョンに戻せません。
しかしgitで管理しているファイルであれば、ファイルの編集履歴を管理できるので、編集前のファイルを残したまま、新しいファイルを保存することができます。
なので、新しいバージョンから古いバージョンまでの管理が簡単です。
Gitでできること
・古いバージョンに戻せる
・新しいファイル、古いファイルの管理
・編集したファイルを複数人で共有できる
・複数人で編集したファイルをまとめることができる
Gitの使い方
1. Gitの仕様
GitはCUIツールです。
CUIツールとは、キャラクタベースユーザインターフェースの略で、キーボードで入力するコマンドによって操作するツールです。
コマンドを入力するだけで、全く同じ事象を再現できます。
2. Gitの基本
1.リポジトリ
リポジトリとはファイルやディレクトリなどを保管する貯蔵庫のようなものです。
Gitにおけるリポジトリの種類は2種類あります。
・リモートリポジトリ
特定のサーバーに設置して複数人で共有するためのリポジトリです。
・ローカルリポジトリ
ユーザー毎に設置される手元のマシンで編集するリポジトリです。
ローカルリポジトリで作業を行い、作業が完了したら、ローカルリポジトリで共有するのが一連の流れとなります。
こうすることで複数のタスクを複数人で割り振って作業することができます。
2.ワークツリーとインデックス
GitではGit管理下に置かれた作業ディレクトリのことを、「ワークツリー」といいます。
そしてGitでは、リポジトリとワークツリーの間に「インデックス」とよばれるものが存在しています。
インデックスとは、リポジトリにコミットする準備をするための場所のことです。
Gitではコミットした際にワークツリーから直接リポジトリに状態を記録するのではなく、その間にあるインデックスの設定された状態を記録するようになっています。
3.ブランチ
ブランチとは、履歴の流れを分岐して記録していくためのものです。
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ内で複数の変更を同時に行うことができます。
また、分岐したブランチは他のブランチとマージ(合流)することで、一つのブランチにまとめることができます。
・masterブランチ
リポジトリに最初のコミットを実行すると、Gitはmasterというブランチを作成します。 以後のコミットはブランチを切り替えるまでmasterブランチに追加されていきます。
・統合ブランチ
通常、masterブランチとして扱われます。
リリース版がいつでも作成可能なようにしておくためのブランチです。
・トピックブランチ
機能追加やバグ修正など、ある課題に対して作成するブランチです。
課題が複数ある場合は、その数だけ作成されます。
4.ブランチを使った並行作業のイメージ
①他のメンバーの作業の影響を受けないよう、メインブランチから自分専用の作業用ブランチを作成します。
②作業の終わったメンバーはメインブランチに自身の作業用ブランチの変更を取り込みます。
このようにすることで、他のメンバーの作業の影響を受けず、自身の作業に取り込むことができます。
また、作業単位で履歴を残すことで、エラーなどが発生した場合、原因・調査などスムーズに行うことができます。
5.コミット
コミットとはファイルやディレクトリなどの編集作業をローカルリポジトリに記録する操作です。
コミットを実行すると、ファイルを編集した日時を記録したファイルが生成されます。
コミットを実行ごとにファイルが時系列順で生成されるので、ファイルを編集した日時を確認したり、その内容を確認できます。
6.プッシュ
プッシュとは、ローカルリポジトリにあるファイルをリモートリポジトリに送信する操作のことです。
誰かが共有しているファイルをクローンして、ワークツリーで作業したファイルをインデックスに一度仮置きし、まとめてローカルリポジトリにコミットします。
ローカルリポジトリにコミットしたファイルを共有するためにリモートリポジトリにプッシュするのが基本的な流れになります。
7.クローン
クローンとは、リモートリポジトリをローカルリポジトリにまるごと保存する機能のことです。
ほとんどの場合、Gitで一番最初に行う作業になります。
8.マージ
マージとは、複数のブランチを一つにまとめて完成形に近づけることです。
バグの修正や機能追加したブランチをmasterブランチに統合します。
9.プル
共有されているリモートリポジトリに保存されているファイルの内、ロ
3. GitとGithubの違い
・Git
誰がいつどのように編集したかを正確に把握できるバージョン管理システムのことを指します。
・Github
Gitの仕組みと連携して、他のユーザーとやりとりしやすくしているWEBサービスの名称のことです。
Githubは、文字通りGitのhub(拠点)であり、世界中のユーザーが編集したコードやデザインデータを保存・共有しやすくするためのWEBサービスになります。
また、GithubはGUI仕様のため、マウスを使って操作出来たり、複数のユーザーでやりとりしやすい環境となっています。
4. 変更履歴の競合
最後にプルを実行してから次のプッシュをするまでの間に、ほかの人がプッシュをしてリモートリポジトリを更新してしまっていた場合には、自分のプッシュが拒否されてしまいます。
この場合、マージという作業を行なって他の履歴での変更を取り込むまで自分のプッシュは拒否されます。
これは、マージを行わないまま履歴を上書きしてしまうと、他の人がプッシュした変更が失われてしまうからです。
マージを行うとGitが自動で変更箇所を統合しますが、できない場合があります。
それは、リモートリポジトリのファイルとローカルリポジトリのファイルの同じ個所を編集している場合です。
この場合、どちらの変更を取り込むか自動で判断できないため、エラーが発生します。