ここでは、基本的な用語やハンズオンでよく使う用語について説明をしていきます。
ハンズオンでも改めて説明するので、なんとなく頭に入れておいてください。
Git とはプログラムのソースコードなどの変更内容を記録・追跡するための分散型バージョン管理システムです。
Git では各ユーザーのワーキングディレクトリに、全履歴を含んだリポジトリ(作業場)の完全な複製が作られるので、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができます。
例えば、プログラミングをしていると日々ファイルの中身は変わっていきます。この変遷の履歴を管理し、必要に応じて前のものに戻したり、途中で枝分かれして別の変更を加えたりするためのシステムです。
かんたんに言うと、オフラインでもプログラムの変更履歴を管理できるシステムです。
GitHub とは、Git の仕組みを利用して、世界中の人たちがプログラムコードなどを管理できるウェブサービスです。
GitHub は様々なプロジェクトのために Git のリポジトリをホスティングできるサービスです。Git は基本的にコマンドラインツールですが、GitHub は Web 上で扱うことができます。
自分が Git で管理しているファイルをウェブサービスでも管理するものです。
リポジトリ(repository)は作業場所のようなもので、中身はドキュメントファイルだったり、設定ファイルだったり、プログラムそのものだったり、いろいろです。
リポジトリは以下の 2 種類があります。
リモートリポジトリはパブリックな場所でみんなで共有するものです。
GitHub 上のリポジトリと考えてください。
これ自体は樹木に例えられることが多く(実際にツリー構造をしている)、main(or master)と呼ばれる幹に安定したコードを置いておき、そこからブランチを生やしていきます。
ローカルリポジトリはプライベートな場所で、ユーザ一人ひとりが利用するために自分の手元のマシン上に管理するリポジトリのことです。
ローカルリポジトリで編集した内容をリモートリポジトリにアップロードしたり、ダウンロードしたりすることができます。
ブランチとは、1 つのプロジェクトから分岐させることにより、プロジェクト本体に影響を与えずに開発を行える機能のことを言います。
イメージとしてはパラレルワールドを作成して、のちに元の世界に収束させることもできる、という感じです。
リポジトリを作ると main(or master)という名前のブランチが作成されます。
個人開発でも使うことはありますが、チーム開発ではほぼ確実に使うと思うので知っておきましょう。
Git 管理下の実際にコードを書いたりする作業スペースのことをワークツリーと呼びます。
イメージしづらいかもしれませんが、単に自分の開発しているディレクトリと考えてください。 ワークツリーで行った変更をローカルのリポジトリに保存するようなイメージです。
インデックスはリポジトリにコミットする準備をするための場所です。
addされるとワークツリーからこのインデックスという場所に移動します。
ワークツリーの変更をローカルリポジトリへコミットする前に一旦この場所を経由するため、
一部ファイルのみをコミットすることなどができるようになります。
ワークツリー → (add) → インデックス → (commit) → ローカルリポジトリ
という流れです。