Gitとは
Gitとは、バージョン管理システムの一つです。 Linuxの開発者であるLinus Torvalds氏が開発したもので、現在では世界中の開発者によって開発が行われています。
Gitを使うことで、コードの変更履歴を管理することができます。
たとえば、あるプログラムを書いていて、そのプログラムにバグがあったとします。 そのバグを直したいのですが、バグが出る前の状態に戻したいときはどうすればいいでしょうか? Gitを使うことで、どこを変更したのか思い出しながら戻す行為をせずとも簡単にバグが出る前の状態に戻すことができます。
また、Gitを使うことで、複数人で同じプログラムを開発することができます。
Gitのインストール
Gitを使うためには、まずGitをインストールする必要があります。 Windowsの場合はこちらから、Macの場合はこちらから、Linuxの場合はこちらからインストールすることができます。
もし、インストールがうまくいかない場合は、こちらを参考にしてください。
Gitの初期設定
Gitをインストールしたら、Gitの初期設定を行います。 ターミナルを開き、以下のコマンドを実行してください。
git config --global user.name "<username>"
git config --global user.email "<email>"
ここで使う<username>
と<email>
は、覚えておいてください。
Gitの用語について(初級編)
Gitを使うためには、Gitの用語を知っておく必要があります。 個人開発の範囲では、以下の用語を知っておけば大丈夫です。
-
リポジトリ (repository)
-
リモート (remote)
-
ローカル (local)
-
アド (add)
-
コミット (commit)
-
ステージ (stage)
-
プッシュ (push)
リポジトリ
リポジトリとは、Gitで管理するファイルやディレクトリのことを指します。 例えば今開発してるプロジェクトをGitで管理する場合、このプロジェクトのディレクトリをリポジトリと呼びます。
リモート
リモートとは、リポジトリを管理するサーバーのことを指します。 リモートには、GithubやGitlabなどがあります。(解説を後述します)
ローカル
ローカルとは、リポジトリを管理するサーバーのことを指します。 リモートとは対照的に、ローカルは自分のPCのことを指します。 つまりネットワークに接続されていない状態でも管理できる範囲のことを指します。
アド
アドとは、ファイルの変更内容をGitの管理対象に一時的に追加することを指します。 Addされたファイルは、ステージと呼ばれる場所に置かれます。
ステージ
ステージとは、Gitの管理対象に追加されたファイルが置かれる場所のことを指します。 ステージに追加されたファイルは、コミットすることができます。 一時的な保存場所と考えてもらっても構いません。
コミット
コミットとは、ステージに追加された変更を履歴に追加することを指します。 コミットされたファイルは、リポジトリに保存されます。
プッシュ
プッシュとは、ローカルのコミット済みの変更をリモートのリポジトリに送信することを指します。 プッシュされたファイルは、リモートのリポジトリに保存されます。
やってみよう
Gitの用語を知ったところで、実際にGitを使ってみましょう。
リポジトリの作成
まずはワーキングディレクトリを作成して、VSCodeで開くところまでやってください。 空のディレクトリの中にいれば大丈夫です。
次に、VSCodeではデフォルトで特定のフォルダを表示しない設定がされているので、表示するように設定を変更します。
Setting > Files Exclude
を開き、**/.git
を削除してください。
次に、VSCodeのターミナルを開き、以下のコマンドを実行してください。
git init
これで、Gitの管理対象になりました。.git
というディレクトリが作成されていることを確認してください。
初めてのコミット
では、ファイルを作成してみましょう。 main.cppというファイルを作成し、以下の内容を書き込んでください。
#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
VSCodeは賢いので新しいファイルを見つけたら**緑色のマーク(Untracked)**を表示してくれます。 Untrackedという名前からもわかるように、まだGitの管理対象になっていないよってことです。 これはコマンドでも確認することができます。
git status
では、このファイルをGitの管理対象に追加してみましょう。 ターミナルで以下のコマンドを実行してください。
git add main.cpp
これで、main.cppがGitの管理対象に追加されました。 VSCodeは賢いので、Gitの管理対象に追加されたファイルを見つけたら**緑色のマーク(Added)**を表示してくれます。 Addedという名前からもわかるように、Gitの管理対象に追加されたよってことです。この状態は「ステージされている」状態です。
これはコマンドでも確認することができます。
git status
すると今までUntracked files
だったファイルがChanges to be committed
になっていることが確認できます。
つまり、Gitの管理対象に追加されたファイルがステージされている状態になっていることがわかります。
では、このファイルをGitの管理対象に追加してみましょう。 ターミナルで以下のコマンドを実行してください。
git commit -m "Hello Worldと表示するプログラムを作成"
これで、main.cppがGitの管理対象に追加されました。
コマンドで確認してみましょう。
git status
ステージが空になってなにもコミットするものがないよって言われます。
git log
を実行すると、以下のようなログが表示されます。
commit <commitのハッシュ>
Author: <username> <email>
Date: <date>
Hello Worldと表示するプログラムを作成
コミット内容に先ほど自分が設定した<username>
と<email>
が表示されていることが確認できます。
これで、main.cppがGitの管理対象に追加されました。
修正する
では、Hello World!
をHello Maximum!
に修正してみましょう。
VSCodeは賢いので、ファイルの変更を見つけたら**赤色のマーク(Modified)**を表示してくれます。(テーマを変更している場合は違う色になっているかもしれません) Modifiedという名前からもわかるように、ファイルが変更されたよ(変更が加わったよ)ってことです。 これはコマンドでも確認することができます。
git status
では、このファイルをGitの管理対象に追加してみましょう。 ターミナルで以下のコマンドを実行してください。
git add main.cpp
これで、main.cppがGitの管理対象に追加されました。 さあAddしたらCommitしましょう。基本はこれを繰り返すだけです。
git commit -m "Hello WorldをHello Maximumに修正"
ログを確認してみましょう。
git log
以下のようなログが表示されます。
commit <commitのハッシュ>
Author: <username> <email>
Date: <date>
Hello WorldをHello Maximumに修正
commit <commitのハッシュ>
Author: <username> <email>
Date: <date>
Hello Worldと表示するプログラムを作成
ここまででローカルでの開発 + Gitの管理を行うことができました。
Githubとは
Githubとは、Gitを使ってコードを管理するためのサービスです。 運営は現在Microsoft社傘下のGithub社が行っています。
Githubを使うことで、Gitで管理しているコードをインターネット上で共有することができます。
注意して欲しいのが、GithubはGitのサービスであって、Gitではありません。
Githubのアカウントを作成しよう
Githubを使うためには、Githubのアカウントを作成する必要があります。
こちらの右上のSign up
からアカウントを作成してください。
ここでは先ほど設定した<username>
と<email>
を使ってください。
Githubにリポジトリを作成しよう
さあ、Githubにリポジトリを作成しましょう。先ほどの用語でいうところのリモートのリポジトリです。 リモートリポジトリは度々「リモート」と呼ばれることが多いです。紛らわしいですが...。
Githubにログインしたら、トップページの左上のNew
をクリックしてください。
Repository nameにgit-practice
と入力してください。
その他の設定はデフォルトのままで大丈夫です。
Create repository
をクリックしてください。
Code
という緑色のボタンをクリックして出てきたURLをコピーしてください。
リモートリポジトリを登録しよう
リモートリポジトリを作成したので、ローカルでの開発内容をリモートリポジトリに送信するために、リモートリポジトリを登録します。
ターミナルで以下のコマンドを実行してください。
git remote add origin <url>
<url>
には先ほどコピーしたURLを入力してください。
プッシュしよう
リモートリポジトリを登録したので、ローカルでの開発内容をリモートリポジトリに送信することができます。
ターミナルで以下のコマンドを実行してください。
git branch -M main # ブランチを"main"という名前にする
git push -u origin main # リモートリポジトリに"main"ブランチをプッシュする
これで、ローカルでの開発内容がリモートリポジトリに送信されました。 確認してみましょう。
OSSとは
OSSという言葉を聞いたことがあるでしょうか? OSSとは、Open Source Softwareの略で、日本語では「オープンソースソフトウェア」と呼ばれています。
OSSとは、ソースコードを公開しているソフトウェアのことを指します。 GithubはOSSのソースコードを公開するためのサービスの一つです。共有したいソースコードをGithubにアップロードすることで、世界中の人にそのソースコードを公開することができます。(もちろん非公開で管理することもできます) そして世界中の人々と一緒に開発や議論を行うことができます。
Githubには、世界中の人が公開しているOSSのソースコードがたくさんあります。 Githubを使うことで、世界中の人が公開しているソースコードを見ることができます。 たとえばLinuxもGithubで公開されて、Torvalds氏をはじめ多くの有志の方々によってバグ修正や機能追加が行われています。