初めに
ファイルのバージョン管理やチームでの作業のためのシステムとして Git、GitHub があります。本記事では、Git やGitHub にできることやインストール、登録の仕方などについてまとめます。
Index
Git
Git とは
gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
Wikipedia
つまり、Git を使うことでファイルの管理やチームでの共同作業などで起こる問題を解消できるようになります。
Git を使うことで以下のようなことが可能になります。
- ファイルの変更履歴が管理できる
- 過去のファイルに戻せる
- なんでも管理できる
- チームで共有できる
リポジトリー
各種履歴を「リポジトリー」で管理します。Git は分散型であり、複数のユーザーで共有する「リモートリポジトリー」とそれぞれのユーザ一が利用するために、自分のローカルマシン上に配置する「ローカルリポジトリー」の2種類のリポジトリーがあります。
各ユーザーは共有リポジトリーからローカルリポジトリーにファイルをコピーしたり、ローカルリポジトリーで新規作成したりすることでファイルを編集します。
各リポジトリーに対して、変更を反映させる操作として「Commit(コミット)」と「Push(プッシュ)」があります。
また、他者がリモートリポジトリーを更新した場合など、リモートリポジトリーの履歴をローカルリポジトリーに取得する操作として「Pull(プル)」があります。
操作名 | 説明 |
---|---|
Pull(プル) | リモートリポジトリの履歴を取得することができます。 |
ブランチ
ブランチとは、履歴の流れを分岐して記録していくためのものです。分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。
チームのメンバーは、他のメンバーの作業の影響を受けないように、メインのブランチから自分の作業専用のブランチを作成します。 そして作業の終わったメンバーは、メインのブランチに自分のブランチの変更を取り込んでいきます。このようにすることで、他のメンバーの作業による影響を受けることなく、自分の作業に取り込むことができます。また、作業単位で履歴を残すことで、問題が発生した場合に原因となる変更箇所の調査や対策を行うことが容易になります。
分岐したブランチは他のブランチと合流(マージ)することで、一つのブランチにまとめ直すことが出来ます。
Git を使う際の基本的な流れ
Git を使う際の基本的な流れは次のようになります。
使い方の例
Git はコマンドラインツールのため、次のようなコマンドを書いて操作をしていきます。
(リポジトリの作成)
# プロジェクトディレクトリを作成 mkdir my_project cd my_project # Gitリポジトリを初期化 git init
(ファイルの追加)
# ファイルを作成または編集 echo "Hello, World!" > hello.txt # ファイルのステージング git add hello.txt
(コミット)
# コミットの作成 git commit -m "Initial commit"
※Git をコマンドラインではなく GUI で操作できるようにするためのツールもあります。Git GUI などがその例です。
Git のダウンロード、インストール
下のリンク先からインストーラーがダウンロードできます。
インストールができたら、Git Bashを起動します。Git Bashとは、Windows上でGitのコマンドを操作するためのツールです。
Git Bashを起動後、以下のコマンドを入力してGitのバージョン情報が表示されることを確認してください。
$ git --version
GitHub とは
GitHub(ギットハブ)とは、Git の仕組みを利用して、世界中の人々が自分の作品(プログラムコードやデザインデータなど)を保存、公開できるようにしたウェブサービスの名称です。
GitHubは、GitHub社によって運営されており、個人・企業問わず無料で利用が可能です。
GitHub に作成されたリポジトリ(保存庫のようなもの)は、パブリック(公開)とプライベート(非公開)を選択できます。また、各プロジェクトにwiki(メモ書き)やタスク管理ツールなど、コラボレーションのための機能も充実しているのが特徴です。