趣旨
GitやSVNなどバージョン管理システムを使ったことがない初心者にGitについて説明する機会がありましたのでその資料用として「Gitとは?」を、初心者にわかりやすく専門用語をなるべく使わずに説明し用語を覚えてもらいたいと思います。
Gitとは

Git【ぎっと】とは、簡単に行ってしまうとプログラムや画像などといったファイルを、「いつ」「誰が」「どんな変更を行った」等といった情報(以降、変更履歴)を管理するソフトウェアです。
この様なソフトウェアはバージョン管理システム(Version Control System)と呼ばれVCS【ぶいしーえす】と略されます。
VCSにはGitの他にもSubversion【さぶばーじょん】(略はSVN【えすぶいえぬ】)などが有名です。
他にもVCSはありますが、紹介は省きます。
管理方式
VCSは、ファイルの変更履歴をデータベースに保存しておりそのデータベースをリポジトリと呼びます。

VCSのリポジトリには集中型と分散型の2種類存在します。
集中型
1つのリポジトリで集中して管理しているためそう呼ばれています。先程紹介したSubversionは集中型バージョン管理システムです。
分散型
Gitは分散型バージョン管理システムです。集中型との違いは、自分のPC上にもリポジトリを持つ点です。自分のPC上のリポジトリをローカルリポジトリといいサーバ上にあるリポジトリをリモートリポジトリといいます。

基本的な利用方法
※これまではSVNも紹介してきましたがここからはGitのみの説明になります。
基本的な操作
Gitの基本的な操作は以下の様になります。
- リモートリポジトリを複製しローカルリポジトリを作成 (clone【くろーん】)
- ファイルの変更し変更履歴の登録対象にする(add【あど】)
- ローカルリポジトリに変更履歴を登録(commit【こみっと】)
- 他人の修正を取得(pull【ぷる】)
- 保存した変更履歴をリモートリポジトリへ反映(push【ぷっしゅ】)
基本的に1のcloneは1度実行したらあとは不要ですので作業としては2から5の繰り返しになります。
clone【くろーん】
リモートリポジトリからコピーしてローカルリポジトリを作成します。
この行為を**clone【くろーん】**と呼びます。また、同時に管理されているファイルも展開されます。
add【あど】
ファイルに変更を加えたファイルを後に出てくる登録(コミット)する対象にします。
この行為を**add【あど】**と呼びます。内部的にはステージングエリアと呼ばれる(インデックスとも呼ばれる)場所に登録されますが、見た目上は変化ありません。
add
は、「この変更を記録します」という意思表示のようなものです。
例えば、引っ越しの荷造りで「段ボールに入れる」作業がaddにあたります。ファイルAとファイルBを変更したけど、今回はファイルAの変更だけを記録したい、という場合にファイルAだけをadd(段ボールに詰める)します。
commit【こみっと】
ステージングエリアに登録されている情報をローカルリポジトリに登録します。
この行為をcommitと呼びます。

pull【ぷる】
他人の修正が入り更新されたリモートリポジトリの情報をローカルリポジトリに反映させます。
この行為をpullと呼びます。
push【ぷっしゅ】
ローカルリポジトリの更新された情報をリモートリポジトリに反映させます。
この行為をpushと呼びます。
以上が、基本的なGitの操作の流れになります。
実際は、余計なファイルまでaddしてしまって取消(reset)を行ったり、他人と修正ファイルが被って衝突(コンフリクト)が発生して1つにまとめる(マージ)などの作業が必要になったりしますが、そうなった時に調べて対処すれば大丈夫です。
応用
今まで基本的な説明をしてきましたが、ここからは応用編です。
Gitを使う開発は複数人で同時並行に作業する場合が殆どです。基本操作で伝えた内容では、困った事が起きます。
branch【ぶらんち】
例えば、複数人で開発していると未完成の状態でもプッシュして別の開発者に連携したい場合があります。
さらに複数チームで未完成のソースをリモートリポジトリにプッシュし合うとリモートリポジトリの管理が煩雑化してしまいます。
そこで多くのVNCではbranchと呼ばれる機能を使ってリポジトリ内でコピーをしてお互いのチームで干渉し合わない様にすることが出来ます。

Masterブランチ【ますたぶらんち】
リポジトリで最初に作られる、一番基本となるブランチをデフォルトブランチと呼びます。このブランチは、伝統的にmaster
という名前でしたが、最近ではmain
という名前が主流になっています。
リモートリポジトリ
今までリモートリポジトリと言ってきましたがリモートリポジトリはどうやって作るのでしょうか?
自分でサーバを立ててそこに作成する方法もありますが、インターネット上にリモートリポジトリを作成・運用出来るサービスもあります。
またこの様にインターネット上で公開し顧客に機能を利用させるサービスをホスティングサービスと呼びます。
主なGitのホスティングサービスは以下の3つです。
Github【ぎっとはぶ】

Gitのホスティングサービスで最も有名なのがGithubです。
無料プランではソースコードを公開しないといけないため、公開したくないリポジトリの場合には不向きです。
以前は無料プランでは非公開リポジトリを作成できませんでしたが、現在は無料で非公開リポジトリも無制限に作成可能です。
多くの利用者がソースコードを公開しているため、プログラムの書き方など勉強になります。
個人開発からチーム開発まで幅広く利用されています。
特徴
-
世界最大のコミュニティ: 開発者数、リポジトリ数ともに最大規模
-
オープンソースに強い: OSSプロジェクトの中心地として機能
-
GitHub Actions: CI/CD機能が強力で、豊富なマーケットプレイス
-
GitHub Copilot: AI駆動のコード補完機能(有料)
-
プロジェクト管理: Issues、Projects、Discussionsなど充実
-
GitHub Pages: 静態サイトホスティングが無料
Bitbucket【びっとばけっと】

無料でリポジトリを公開しない設定に出来るGitのホスティングサービスです。そのかわり1プロジェクトに対して5人までの制限があります。
5人以降は、有料プランです。
小規模開発でソースを公開したくない場合によく利用します。
特徴
- Atlassian製品との統合: Jira、Confluence、Trelloとシームレスに連携
- Bitbucket Pipelines: YAMLベースのCI/CD機能
- 小規模チームに優しい: 5人まで無料(制限あり)
- プルリクエストの柔軟性: マージチェック、承認ワークフローが充実
- Mercurial対応: かつてはMercurialもサポート(現在は終了)
GitLab【ぎっとらぼ】

特徴
- オールインワン DevOps: CI/CD、セキュリティスキャン、モニタリングまで統合
- セルフホスト可能: オンプレミスでの運用が可能(Community Edition)
- 強力なCI/CD: GitLab CI/CDは非常に柔軟で高機能
- Container Registry: Dockerイメージレジストリ内蔵
- Issue管理: エピック、マイルストーン、ボードなど高度な管理機能
- Auto DevOps: 自動的にCI/CD環境を構築
以上の3つが主なGitのホスティングサービスです。
Google Trendsで人気の動向を調べると圧倒的にGitHubが人気があるのがわかりますね。

以上で、Gitの説明は終わります。
今回は、初心者に概念を伝えるをテーマに話しましたので詳細な説明は省きました。