プログラムのソースコードがのってる場所!といえば、多くの人が「GitHub」を思い浮かべると思います。

プログラミングやCTF関連のことを調べていると、しょっちゅうGitHubのリンクに出会いますよね。

 

今やエンジニアやプログラマーにおいてGithubは必要不可欠な存在といえるのではないでしょうか。

 

そんなGitHubですが、自分もついこの間まで、「なんかソースコードとかファイルが保管されている場所」というとても曖昧な認識でした。別に間違っているわけではないのですが、これから深くCTFを勉強していくにあたって、ちゃんと理解しておいたほうがいいと思ったので、ここにまとめておきます。

 

GitHubは"Git"の"Hub"

なにいってんだこいつと思うかもしれませんが、GitHubは言葉通りGitのHubです。Hubという言葉は英語で拠点、集まりという意味です。ではGitとはなにか、なにの集まりなのかを、順を追って説明していきたいと思います。
 
Gitとは、プログラムのソースコードなどの変更履歴を記録追跡するための分散型バージョン管理システムのことです(wikiより)。
バージョン管理システムとはファイルなどの編集履歴を管理するシステムのことです。
もともとは、リーナス・トーバルズ(linuxの開発チームのメンバー)という方がlinuxカーネルのソースコードを管理するために開発されたものだそうです。
 
 

Gitが開発された当時のバージョン管理システムは、サーバー上の1つのリポジトリ(ファイルなどの状態を内容の変更履歴として保存する場所のこと)を、使用者が共用で使っていました。よって誰がどこを編集したのかわからなかったり、先に編集した人の変更内容が消えてしまったりと、非常に不安定でした。

 

そこにGitが登場します。Gitの最大のポイントは、ローカル環境にレポジトリがコピーされるということです。つまりどういうことかというと、変更履歴等のレポジトリが自分のPCに保存されるので、サーバーにアクセスする必要すらないのです。またローカル環境にもコードの変更履歴履歴を保存できるので、インターネットに接続されていなくても利用することができます。

 

めちゃめちゃ画期的ですよね。

 

そしてこのGitのシステムを利用して、自分が書いたソースコードやファイルなどを世界中の人に共有できるようにしたのが、GitHubです。誰でも無料で利用することができるので、今やプログラマーにとっては必須なものとなっています。

 

GitはCUIで操作するのが一般的(?)です。もしこれからプログラミングなどを勉強しようと思っている方なら、少しでもGitに触れてたほうがいいかもしれません。勉強を進めていくうちに必ず使うことになると思います。

 

 

では!