【第3回】 Git/Githubを使ってコードを管理しよう

GitとGithubを使ってみましょう。自分が書いたコードを管理したり他の人と共有したりでき、どの分野の開発者にも必要なスキルです。

Homeブログ一覧【第3回】 Git/Githubを使ってコードを管理しよう

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というファイルを作成し、以下の内容を書き込んでください。

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氏をはじめ多くの有志の方々によってバグ修正や機能追加が行われています。