Gitの操作の流れを知って全体像をつかみましょう。
前回までの流れ
Gitってなんのために使う? - 未来エンジニア養成所Blog
Gitのインストール(Mac OS編) - 未来エンジニア養成所Blog
Gitのインストール(Windows編) - 未来エンジニア養成所Blog
Gitの操作の流れ
作業の流れとして、まずローカルでファイルの変更をします。
ファイルを変更したら、そのスナップショットを記録していきます。
ローカルとは自分の手元のパソコンのことです。ここで押さえて欲しいのは作業の流れとして、まずローカルという自分のパソコンでファイルの作成や変更をしたら、そのスナップショットを記録するということです。
スナップショットを記録したら、それをGitHubへアップロードします。
GitHubはオンライン上のGitのコード置き場です。オンライン上のコード置き場のことをリモートリポジトリと呼びます。リポジトリとはコードの置き場のことで、リモートというのがオンライン上(自分のパソコンとは別の場所)ということです。
自分でファイルを変更した時は今見てきた流れになります。
ファイルをローカルで変更して、変更したらそのスナップショットをローカルで記録します。記録したらそれをGitHubへアップロードします。
ワークツリーとローカルリポジトリ
ここでローカルのワークツリーとローカルリポジトリについて説明します。
まずローカルリポジトリですが、リポジトリとは履歴データの置き場(履歴データのデータベース)です。履歴のデータを保管している場所です。ローカルは自分のパソコンのこと。なので、ローカルリポジトリというのは自分のパソコンの履歴データの保管場所のことを言っています。
ワークツリーというのは難しく考えずに、自分の作業しているところだと思って下さい。自分の作業場です。
もしパソコンでコードを編集していたら、そこのことになります。ワークというのが作業場のことで、ツリーというのがディレクトリやフォルダのことを指しています。
ローカル作業全体をここで振り返ると、ワークツリーという自分の手元の作業場でファイルを変更して、そのスナップショットをローカルリポジトリに保管するというながれになります。
他の人がGitHubのファイルを変更した場合は?
今までは自分のファイルを変更した場合の話でした。
では、他の人がGitHubのファイルを変更した場合はどうすれば良いのでしょうか。
GitHubは複数人で作業できるようになっているので、他の人がファイルを変更してアップロードするというのはよくあることです。その変更を自分のローカルへも取り込みたい。
その作業の流れを見て行きます。
他人の変更を取り込む時は、まずGitHubからローカルリポジトリ(履歴の保管場所)にその変更内容を取得してきます。変更内容を取得したらワークツリー(自分の手元の作業場)にその内容を反映させます。
ここまで見てきた流れを、それぞれの人がやることがGitの操作全体の流れになります。
ローカルでの作業
では、ここからローカルの作業の流れについてより詳しく見て行きます。
Git作業の8割はローカルなので、ローカル操作をしっかり押さえていきましょう。
ローカルで押さえて欲しいことは、まず「ワークツリー」「ステージ」「リポジトリ」という3つのエリアに分かれていると言う事です。
「リポジトリ」は先ほど出て来たローカルリポジトリのことで、名前が長いので省略しています。この3つのエリアの概念はGitの根幹をなしているのでしっかり理解していきましょう。
まずは「ワークツリー」から見て行きます。
ワークツリーは先ほど説明した通りで、ファイルを変更したりする手元の作業場のことです。
手元でファイルを変更したらリポジトリにスナップショットを記録するのですが、実際にはその前にステージに変更を追加するという作業が挟まります。
では、「ステージ」とは何か。
ステージとはコミットする変更を準備する場所のことです。
先にコミットの説明をします。
コミットというのはスナップショットを記録することです。
ですので、ステージというのはスナップショットを記録するための準備の場所だと言えます。Gitではそのステージに一旦変更を追加してから、その後にスナップショットを記録していきます。
ちなみに、これを実行するコマンドが 「git add」 コマンドです。コマンドに関しては後で詳しく解説します。
では、なぜ一旦ステージに追加するなんていう面倒なことをしているのでしょうか。
これは本当にたくさんのファイルを変更した時に、変更が完了したファイルもあれば変更が完了していないファイルもある。でも変更が完了した分だけをスナップショットとして記録しておきたい、GitHubへアップしたいという時があります。
そのような時のために変更が完了した分だけを記録できるよう、記録する変更ファイルをステージに追加して、ステージに追加された変更分だけをその後にリポジトリに記録するという仕組みになっています。
大変よくできていますね。
このように手元でファイルを変更したらまずはステージに追加する、そして追加したら最後その後にリポジトリにスナップショットを記録していきます。
このスナップショットの記録場所がリポジトリで、スナップショットを記録するというのがコミットです。
これは 「git commit」 というコマンドで実行できます。これがローカルでの作業全体の流れになります。
まとめ
最後にもう一度振り返ると、まずワークツリーでファイルを変更します。ワークツリーというのは手元の作業場のことです。
その変更をステージに追加します。ステージとは記録する変更を準備する場所で、全部の変更を記録したくない時もあるので、記録したい変更分だけをステージに切り分けておきます。
最後にステージに追加された変更をスナップショットとしてリポジトリに記録します。リポジトリというのはスナップショットを記録する場所のことで、記録することをコミットと呼びます。
さらに詳細を知りたい人は下記の本がお勧めです。(詳細は画像をクリック)