Git・GitHubってどんなもの?

スキルアップ

スマホアプリやWEBアプリなど、ソフトウェアの開発時においてGitやGitHubがよく利用されています。

ですが、

聞いたことあるけどよくわからんのや。

使うことはあるけど、なんとなく使ってるだけや。

って方もいらっしゃるのではないでしょうか。

そこで、本記事ではGitやGitHubの基礎の基礎について解説します。

Gitって何?

まず、下記のような状況になっているフォルダを見たことってありませんか?
何度も見かけたことがある方も多いのではないでしょうか。 
 説明資料_20231115.pptx
 説明資料_20231116.pptx
 説明資料_20231116のコピー.pptx
 説明資料_20231116_最新.pptx
 説明資料_20231116_上司コメント.pptx
 説明資料_20231117.pptx

上記のような状態では、どのファイルが最新なのか、何が変更されたのかがわかりませんよね。

また、複数人で編集していた場合、誰が何を編集したのかわからなかったり、誰かが編集した内容を上書きしてしまったり、という状況になりますよね。

そこでGitの登場になります。
Gitとは、バージョン管理システムと呼ばれていて、どのファイルの何を誰がいつ何のために変更したのかを管理(=バージョンの管理)するためのものです。

バージョンの管理をすることで、どのファイルの何が変更されたかがわかりますし、どのファイルが最新なのかも把握することができます。

バージョン情報も残っているので、元のバージョンに戻すことも可能になります。

複数人でファイル編集をする場合でも、誰がどのファイルをなぜ変更したのかがわかるので、上書きしてしまうことも防ぐことができます。

Gitの仕組み

ポイント

ここでのポイントは2つあります。

① 変更履歴を時系列順に記録することができる

最初にファイルを作成し、ファイル新規作成というタイトルと共に変更履歴1を記録します。
その次に、説明文を追加した場合、説明文追加というタイトルと共に変更履歴2として記録する。
・・・というように記録することで、誰が、いつ、何を変更したのかがわかりますし、最新の状態も把握することができます。

② 変更を記録する際にコメントをつける

変更履歴1ではファイル新規作成、変更履歴2では説明文を追加していますが、それらが何のために行われたのか、目的は何なのか、コメントを残すことができます。

上記のポイントにより、いつ、誰が、何を変更したのかということを把握できるようになります。
また、何を何のために変更したのかが把握できるようになり、過去の履歴にも遡りやすくなります(以前の状態に戻すことも可能!)。

Gitを使った開発の流れ

ここではGitを利用して開発する際の流れを説明します。

まず、個人のファイルを変更した際、その変更履歴を個人リポジトリに記録します。
リポジトリとはファイルとファイルの変更履歴を記録する場所のことを言います。
このように個人リポジトリに記録することをcommit(コミット)と言います。

次に、共有リポジトリというサーバー上にある変更履歴を記録する場所に変更を記録します。
このことをpush(プッシュ)と言います。

ここまでで個人で作業する際の流れを説明しましたが、複数人で行う場合も下記で説明します。

まず、共有リポジトリの情報を個人リポジトリに取得します。
このことをpull(プル)と言います。サーバーから個人パソコンに情報を引っ張ってくるということになります。

そのあとは、個人開発の場合と同様、ファイルを変更し、commitして、pushするという流れになります。

上記を複数人で行うことで開発を行なっていくことになります。

GitHubとは?

GitHubとは、Gitではファイルやファイルの変更履歴を管理していますが、それをオンライン上で行ってくれるサービスのことを言います。

また、特徴として開発者やチームでのより良い開発のためにコラボレーションできる機能を提供しています。
その一つにプルリクエスト(pull request)があります。
共有リポジトリに自分のリポジトリを取り込んでもらう(merge:マージという)ために出すリクエストのことで、自分の変更履歴の説明や理由を記載して開発メンバーにレビューしてもらいます。メンバーが承認してくれると、共有リポジトリにmergeされます。また、自分の変更に修正が必要だったり、説明が不足している場合はメンバーから指摘が入ることもあります。その場合は修正後に再度pull requestを出すことになります。

このように、開発のコラボレーションが実現されています。

まとめ

本記事ではGitやGitHubについて解説しました。

Gitはファイルの変更を管理(=バージョンの管理)するためのものでしたね。
GitHubはファイルやファイルの変更をオンライン上で管理してくれるサービスのことでした。

これがあるから、現在のソフトウェア開発が成り立っているのですね。

コメント

タイトルとURLをコピーしました