今さら聞けない!GitHubの使い方【超初心者向け】

今まで使ったことがない初心者向けに「GitHubの使い方」を解説した記事です。Gitを使う上で知っておきたい、ローカルリポジトリとリモートリポジトリ、コミットとプッシュなども細かく紹介。最後は、よく使うGitのコマンド12もあり。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

 

開発者にとってなくてはならないサービスとしてGitHubがあります。

エンジニアにとっては当たり前のサービスですが、これからプログラミングの勉強を始める初心者にとってはよくわからないかもしれません。

 

そこで今回は、そんな初心者でも今日から使えるように解説していきます。

そもそもGitHubとは何なのか、どんな時に使うツールなのかを知っていきながら、実際の使い方を紹介しています。

本格的に使おうと思ったらもっと多くのことを知る必要がありますが、業務で使うということでなければ十分でしょう。

 

なお本記事は、TechAcademyのオンライン完結のGitHub講座のカリキュラムをもとに執筆しています。

 

今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

 

大石ゆかり

田島メンター!!GitHubってなんですか〜?

田島悠介

GitHubはね、Gitをオンライン上で管理するサービスだよ。

大石ゆかり

もう少し詳しく教えてもらえますか〜?

 

目次

 

GitHubとは

GitHubとは、ソフトウェア開発プロジェクトのためのソースコード管理サービスです。

ソースコードを更新したバージョンの管理や閲覧、バグ追跡機能、SNSの機能を備えており、開発者にとってなくてはならないサービスです。

また、GitHubを使ってソースコードの管理を行っている企業も多数あります。

 

GitHubが人気な理由と類似サービスとの違い

GitHubと同じようなソースコード管理サービスとしては、BitbucketやGitLabなどがあります。

それぞれのサービスとの違いをもとに、GitHubが人気な理由を見ていきましょう。

理由1:無料のプライベートリポジトリ

ソースコードを管理する単位をリポジトリと呼びます。

リポジトリは格納場所という意味で、他の利用者にも公開されるパブリックリポジトリと、公開が関係者だけに限定できるプライベートリポジトリがあります。

ソースコードを公開したくない場合は、プライベートリポジトリを選択する必要がありますが、以前はGitHubは有料、BitbucketやGitLabでは無料という状況でした。

しかし2020年4月から、GitHubでも無料のプライベートリポジトリを無制限に作成可能になりました。

これによりGitHubを使いたかったがソースコードは公開したくない個人や企業の利用が大幅に増え、さらにGitHubの人気が高まる状態となりました。

 

理由2:オープンソースコミュニティに育まれたSNS機能

オープンソースとはソースコードが公開されており、誰でも無料で利用できるソフトウェアのことを指します。

また、オープンソースコミュニティとは、オープンソースの開発者同士の集まり、結びつきのことです。

GitHubでは以前から多くのオープンソースが管理されており、たくさんのオープンソースコミュニティが形成されています。

このオープンソースコミュニティに育まれる形で、GitHubには以下のような機能が充実しており、コミュニティが開発を行いやすくなっています。

  • コミュニティの中で誰がどのぐらい貢献しているかを可視化する機能(スター、貢献度)
  • 開発メンバーの知見を共有する機能(Wiki、GitHub Pages)
  • ソースコードの更新などに関する議論をやりとりする機能(Issues、Codeとの連動)

単にソースコード管理サービスとしての機能だけを捉えると、実はGitHub、Bitbucket、GitLabとも大きな違いはありません。

しかしこのような開発しやすい環境を支援する機能という点では、GitHubが頭一つ抜けている印象を持ちます。

 

理由3:先進的な機能の拡充

GitHubは2018年にMicrosoft社に買収され、傘下の一企業となりました。

Microsoft社は買収後もGitHubを独立企業として維持する意向を示しており、両社はオープンソースコミュニティにとっても良好な関係となっています。

このような環境の中から、以下のような先進的な機能が次々と誕生しています。

  • 世界中のエンジニアに人気のあるMicrosoft社のフリーのソースコード編集ソフト「Visual Studio Code」をオンラインで利用できる「Codespaces」
  • オープンソースコミュニティに開発者としてではなく、資金提供者として参加できる「Sponsors」機能
  • ソフトウェアの開発から公開までの一連の流れをサポートする「GitHub Actions」

これら先進的な機能は類似のソースコード管理サービスにはないものであり、開発者にとってGitHubを選ぶ理由の1つとなっています。

 

[PR] 無料で現役エンジニアから学べる

GitHubのアカウント登録

それではさっそくGitHubに登録してみましょう。

まずは、GitHubのトップページにアクセスします。

ここでメールアドレスを入力し、緑色の「Sign up for GitHub」ボタンをクリックします。

 

次の画面でUsername(ユーザー名)やPassword(パスワード)を入力します。

下の方にある「Pick the spiral galaxy」は、不正なユーザー登録を防ぐための仕組みです。

クイズになっており渦巻状の銀河の絵を数回選択します。

なお、このクイズは定期的に変わるようです。

 

決められた回数、クイズに正解すると「Create account」ボタンを押せるようになります。

ボタンを押して次に進みましょう。

 

このような画面になります。

 

登録したメールアドレスに認証のメールが届きます。

メールの内容に従いユーザー認証を行ってください。

以上でGitHubのアカウント登録は完了です。

 

大石ゆかり

GitHubの登録はできました♪それで、どうやって使うんですか〜?

田島悠介

その前にいくつか知っておいたほうがいいことがあるから、教えておくね。

大石ゆかり

はい、お願いします♪

 

GitHubを使う上で知っておきたい事前知識

早速GitHubを使っていきたいところですが、使い始める前に知っておきたい事前知識を3つ紹介します。

ここで紹介する言葉がまったくわからない場合は、理解しておきましょう。

 

事前知識1:ローカルリポジトリとリモートリポジトリ

リポジトリとは、ファイルやディレクトリの状態を保存する場所です。

変更履歴を管理したいディレクトリなどをリポジトリの管理下に置くことで、そのディレクトリ内のファイルなどの変更履歴を記録することができます。

リポジトリは自分のマシン内にある「ローカルリポジトリ」とサーバなどネットワーク上にある「リモートリポジトリ」の2カ所にあります。

基本的にローカルリポジトリで作業を行い、その作業内容をリモートポジトリへプッシュする流れで行います。

git_repository_figure

 

事前知識2:コミットとプッシュとは

最低限この2つは知っておきましょう。

コミット(commit)

ファイルの追加や変更の履歴をリポジトリに保存すること

プッシュ(push)

ファイルの追加や変更の履歴をリモートリポジトリにアップロードするための操作

 

事前知識3:ブランチ(branch)とは

ソフトウェアの開発では、現在リリースしてるバージョンのメンテナンスをしながら新たな機能追加やバグ修正を行うことがあります。

このような、並行して行われる複数のバージョン管理を行うために、Gitにはブランチ(branch)という機能があります。

ブランチは履歴の流れを分岐して記録していくものです。

分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ内でそれぞれの開発を行っていくことができます。

 

事前知識4:インデックス(index)とは

リポジトリ管理下にあるディレクトリの中には、一時的に使うファイルなど、Git管理が不要なものもあります。

そこでGitでは、バージョン管理する対象のファイルやフォルダを「インデックス」と呼ばれる台帳に登録することで、必要なもののみバージョン管理が行えるようになっています。

逆に言えば、新たにフォルダやファイルを作成した場合、コミットする前にインデックスに登録する必要があります。

忘れないようにしましょう。

 

GitHubの使い方

それでは使い方を覚えていきましょう。

基本的なGitの作業は下記のような流れとなるので、GitHubを使って順番に紹介します。

なお、「1」の作成は初回のみ行い、「2」から「5」を繰り返します。

基本的に小さい作業の単位でコミットを行い、ある程度作業がひと段落した時にプッシュをするのが一般的です。

コミットの作業がわかりやすいように、コミットメッセージを残しておくと、ログを追っていく時に役立ちますので覚えておきましょう。

  1. Githubでリポジトリを作成(git init)
  2. ファイルの作成、編集を行う
  3. ファイルの作成/変更/削除をgitのインデックスに追加する(git add)
  4. 変更結果をローカルリポジトリにコミットする(git commit)
  5. ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる(git push)

 

GitHubでリポジトリを作成(git init)

まずはリポジトリを作成します。

GitHubにログインした状態で以下にアクセスします。

https://github.com/new

 

次に表示される画面では、「Repository name」の入力のあと、必要に応じて「Description」も入力します。

また、リポジトリの種類を「Public」か「Private」を選択します。

ソースコードを公開したくない場合は「Private」を選択すると良いでしょう。

最後に、リポジトリの中にあらかじめREADMEファイルを作成しておく場合は「Initialize this repository with a README」にチェックを入れます。

.gitignoreやlicenseについては後で追加や変更ができるので、Noneを選択します。

github-04

必要項目の入力が終わり「Create repository」ボタンをクリックするとリポジトリの作成は完了です。

次の画面で、リモートリポジトリのアドレスが表示されますので、控えておいてください。

 

ファイルの作成、編集を行う

はじめに、ローカルのPC上にローカルリポジトリを作成します。

今回は「awesome」というディレクトリを作成することにします。

 

以下の操作はWindowsであればPowerShell、Macであればターミナルで行います。

コマンドは1行ずつ、最後にEnterキーを押して入力しましょう。

mkdir awesome
cd awesome
git init

「mkdir」は新しくディレクトリを作成するコマンドで、「cd」はディレクトリを移動するコマンドです。

awesomeというディレクトリを作成し、そのディレクトリに移動してから作業が始まります。

そして、この「git init」コマンドはGitリポジトリを新たに作成するコマンドです。

バージョン管理を行っていない既存のプロジェクトをGitリポジトリに変換する場合や、空の新規リポジトリを作成して初期化する場合に使用します。

git initコマンドを実行するとカレントディレクトリをGitリポジトリに変換します。

 

次に、テキストエディタなどで以下のHTMLファイルを作り、先ほどのawesomeフォルダに「hello.html」という名前で保存しましょう。

hello

 

現在の状態を確認しましょう。

git status

 

結果は以下のようになります。

hello.htmlが「Untracked files」、つまりインデックスに登録されていないファイルとして表示されています。

On branch master
Untracked files:
 (use "git add <file>..." to include in what will be committed)
 hello.html

 

ファイルの作成/変更/削除をgitのインデックスに追加する(git add)

先ほど作成した「hello.html」のファイルをローカルリポジトリに追加しましょう。

以下のコマンドでインデックスに追加します。

※インデックスとは、リポジトリにコミットする準備をするために変更内容を一時的に保存する場所のことです。

git add hello.html

 

インデックスに追加したら、再度状態を確認しましょう。

git status

 

結果は以下のようになります。

hello.htmlがインデックスに追加され、「Changes to be committed」コミット対象のファイルとして管理されるようになりました。

On branch master
Changes to be committed:
 (use "git restore --staged <file>..." to unstage)
 new file: hello.html

 

変更結果をローカルリポジトリにコミットする(git commit)

次に、インデックスに追加されたファイルをコミットします。

※コミットとは、ファイルやディレクトリの追加や変更をリポジトリに記録する操作のことです。

git commit -m "add new file"

 

これで、リポジトリに対してファイルの追加が記録されました。

再度状況を確認します。

git status

 

結果は以下のようになります。

これはすべてのファイルがコミット済みの状態を表しています。

On branch master
nothing to commit, working tree clean

 

さらに、リモートリポジトリに反映させる前に、リモートリポジトリの情報を追加します。

この情報は、先ほどGitHub上に表示された、リモートリポジトリのアドレスです。

今回は例を示していますので「https://github.com//awesome.git」の部分をご自身のリモートリポジトリのものに置き換えて実行しましょう。

git remote add origin https://github.com//awesome.git

 

ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる(git push)

ローカルリポジトリの変更を、GitHub上にあるリモートリポジトリに反映させるため、以下のコマンドを実行します。

git push origin master

 

最初はGitHubのユーザー名とパスワードを尋ねられますので入力してください。

これで、GitHubへプッシュしてリモートリポジトリへ反映させることができました。

 

ブランチの使い方

基本的な使い方が分かったところで、実際の開発現場でよく利用されているブランチ(branch)の使い方について見ていきましょう。

事前知識としてご紹介しましたが、ブランチは並行して行われる複数のバージョン管理を行うための仕組みです。

基本的には以下のような手順で利用します。

ブランチの作成、移動

まずは現在のブランチ一覧を見ていきましょう。

git branch

実行結果は以下のようになります。

作業中のブランチには「*」が付きます。

これで、現在のブランチが master だけであり、作業中のブランチもmasterであることが分かります。

 

それではブランチを作成してみましょう。

今回は「sub1」というブランチを作成します。

git branch sub1

 

ブランチの移動は、checkoutコマンドで行います。

git checkout sub1

 

なお、ブランチの作成と移動は、以下のコマンドでまとめて行うこともできます。

git checkout -b sub1

 

ここで再び、現在のブランチ一覧を見てみましょう。

git branch

 

実行結果は以下のようになります。

sub1ブランチが追加され、作業中であることが分かります。

 

ブランチ内での開発作業

次にブランチ内で開発作業を行っていきます。

とは言ってもなんら変わることはありません。

例として、goodmorning.htmlというファイルを作成してみます。

 

ブランチにプッシュ

まずは、作成したファイルをgitに追加、コミットします。

git add goodmorning.html

git commit -m "add file goodmorning"

 

これで、ローカルリポジトリに対してファイルの追加が記録されました。

では、リモートリポジトリに反映させてみましょう。

リモートリポジトリの情報は登録済みですので、ブランチ名を指定するだけで、プッシュできます。

git push origin sub1

 

GitHubで確認してみると、現在2つのブランチが存在し、sub1ブランチがプッシュされていることが分かりますね。

 

ブランチからプル

それでは、他の開発者がsub1リポジトリで開発するにはどうしたら良いでしょうか。

このような共同開発でこそ、gitは威力を発揮します。

この場合、プルコマンドを使って簡単に実現できます。

※以下、他の開発者が、同じGitHubで共同開発しており、masterブランチをチェックアウトしているとします。

 

まずは、リポジトリsub1にチェックアウトします。

git checkout sub1

 

実行結果は以下のようになります。

チェックアウトしたブランチsub1が、リモートブランチのsub1に対応していることが分かります。

 

次にリモートブランチsub1のコードを取得します。

git pull

 

ローカルファイルの一覧を見ていきましょう。

ls

 

実行結果は以下のようになります。

たったこれだけで、複数の開発者による共同開発をはじめることができます。

 

ブランチのマージ

実際の開発現場では、新機能をブランチを作って開発を行い、テストが完了したら、メインのmasterブランチに取り込む、という流れで開発作業を行います。

このブランチに取り込む作業のことをマージといいます。

具体的な手順は以下のとおりです。

まず、作業中のブランチをmasterに切り替えます。

git checkout master

 

次に、sub1ブランチの作業結果をマージします。

git merge sub1

 

実行結果は以下のようになります。

sub1ブランチで作成したgoodmorning.htmlファイルが追加されたことが分かりますね。

 

GitHubにプッシュしてみましょう。

git push origin master

 

これで、ブランチsub1の内容がmasterにマージされました。

 

ブランチの削除

使わなくなったブランチは削除することができます。

ただし、実際の開発現場では、間違って作成してしまった場合を除き、作業が完了したブランチであっても残しておくことが一般的です。

 

ブランチの削除は以下のコマンドで行います。

git branch -d sub1

 

結果を見てみましょう。

git branch

 

実行結果は以下のようになります。

ブランチsub1が削除され、masterだけが存在していることが分かります。

 

GitHub上のファイルのダウンロード方法

GitHubからファイルをダウンロードするには、GitHubのリポジトリをクローン(コピー)する方法と、圧縮ファイルとしてダウンロードする方法があります。

 

リポジトリをクローンする方法

Gitによるソースコードの管理を行いつつ、別のフォルダやパソコンでソースコードの編集を続けたい場合には、リポジトリのクローンを行うと良いでしょう。

リポジトリのクローンを行うには、GitHubでリポジトリの画面を開きます。

緑色の「Code」ボタンをクリックします。

出てきたメニューからコピーボタンをクリックします。

 

WindowsであればPowerShell、Macであればターミナルを開き、以下のコマンドを入力します。

今回は例を示していますので「https://github.com//awesome.git」の部分をご自身のリモートリポジトリのものに置き換えて実行しましょう。

git clone https://github.com//awesome.git

 

これでGitHubのリモートリポジトリがローカルリポジトリとしてコピーされました。

以降はawesomeフォルダで通常のローカルリポジトリと同様に操作が行えます。

非常に簡単ですね。

 

圧縮ファイルとしてダウンロードする方法

公開されているソースコードをダウンロードして見てみたい、単にソースコードを実行してみたいなどの場合には、圧縮ファイルとしてダウンロードする方法がおすすめです。

先ほどと同様にGitHubでリポジトリの画面を開きます。

緑色の「Code」ボタンをクリックします。

出てきたメニューから「Download ZIP」をクリックします。

 

リモートリポジトリの内容が圧縮ファイルとしてダウンロードされます。

今回はリポジトリ名がawesomeでブランチがmasterですので「awesome-master.zip」というファイル名になります。

ダウンロードした圧縮ファイルを解凍するとawesomeフォルダが現れます。

ただし単にリモートリポジトリに格納されているファイルやフォルダが含まれているだけで、Gitのリポジトリとしての機能はありません。

リモートリポジトリからも切り離されている状態ですので注意しましょう。

 

 

よく使うGitのコマンド12

最後によく使うGitのコマンドを12紹介します。

既に紹介しているものもありますが、まずはここから覚えておきましょう。

 

git status

リポジトリの状態を確認するために使うコマンドです。

現在のブランチの名称や、追加・変更されたファイルやディレクトリの一覧を表示します。

git status

 

git add

ファイルやディレクトリをインデックスに追加するために使うコマンドです。

追加するときの[file_pattern]には、ファイル名やディレクトリ名を直接指定する他に、「*.txt」のように、ワイルドカードで複数対象を指定することもできます。

git add [file_pattern]

 

git commit

インデックスに追加されたファイルやフォルダの変更をリポジトリに書き込むために使うコマンドです。

オプションを指定しないでこのコマンドを実行すると、コミットメッセージを記述するためのエディタが起動します。

エディタの使い方はそれぞれ異なりますので、簡単にメッセージを指定するには-mオプションを付けた後にダブルクォーテーションで囲ったメッセージを指定します。

また、-aオプションを指定すると、変更されたファイルを検出してインデックスに追加する動作も同時に行います。

git commit -am "A first commit"

 

git branch

ブランチに対して各種操作を行うために使うコマンドです。

下記のように使います。

  • git branch [branch-name]:ブランチの作成
  • git branch:ブランチの一覧表示
  • git branch –d [branch-name]:指定したブランチを削除

 

git checkout

ローカルリポジトリのブランチを切り替えるときに使うコマンドです。

git checkout [branch-name]

 

git log

ローカルリポジトリのコミット履歴を閲覧するために使うコマンドです。

-nオプションで履歴の表示数を指定できます。

git log –n 10

 

git grep

リポジトリのファイルの内容から検索したいときに使うコマンドです。

特定の語句が含まれているファイルを検索し、そのファイルのどこに語句が含まれているかを調べることができます。

git grep "検索単語"

 

git clone

既存のリモートリポジトリをローカルに落とすために使うコマンドです。

例えば、GitHubに公開されているリポジトリを自分のコンピュータへ落とすときに使います。

git clone [url]

 

git remote

リモートリポジトリを操作するために使うコマンドで下記のように使います。

  • git remote:リモートリポジトリの名称一覧を表示
  • git remote -v:リモートリポジトリの詳細一覧を表示
  • git remote add [name] [url]:リモートリポジトリを追加
  • git remote rm [name]:リモートリポジトリを削除

 

git reset

ローカルリポジトリのコミットを取り消すために使うコマンドです。

間違えてコミットしたり、修正漏れがあったときによく使います。

git reset –soft HEAD^

 

git merge

現在のブランチに対して、他のブランチで行った変更を取り込むために使うコマンドです。

以下の例では、ブランチbug-fixをmasterブランチにマージします。

git checkout master
git merge bug-fix

 

git pull

リモートブランチの変更を取り込むために使うコマンドです。

以下の例では、ローカルリポジトリのmasterブランチにリモートリポジトリoriginのmasterブランチを取り込みます。

git checkout master
git pull origin master

 

今回の記事は以上です。

ぜひご自身で使ってみてください!

 

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバーでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。Wordpressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。小学生がオリジナルAndroidアプリをGoogle Playでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞、中学生がSNS型PWAアプリリリースなど、ボランティアプログラミング教育活動行っている。

 

動画での解説はこちら。

Gitのインストール方法の記事もあるので、合わせてご覧ください。

 

大石ゆかり

なんだか覚えることがたくさんあって、大変そうですね・・・。

田島悠介

そうだね。でも最初のうちは使うコマンドは本当に最低限commitしてpushとかpullとかだけ抑えておけばいいから、少しずつ慣れていこうね。

大石ゆかり

頑張ります♪

 

[お知らせ]テックアカデミーでは現役エンジニアから自宅で学べるオンライン完結のWebアプリ開発講座を開催しています。わからないことをチャットで質問すると、現役エンジニアのメンターが毎日すぐに回答します。また、現役エンジニアから学べる無料のプログラミング体験も実施しているので、ぜひ参加してみてください。