個人でローカルリポジトリを使用してバージョン管理を行うのは比較的簡単です。しかし多くのプロジェクトでは、複数名でGitHubなどのサービスを利用し、リソースをリモートリポジトリに集約するのが一般的。したがって、GitHubへのプッシュ方法を習得することが欠かせません。

ということで、今回はコマンドラインを使用してGitHubにプッシュする方法、そしてこのプロセスを楽にしてくれる専用アプリをご紹介します。まずは、GitHubの使い方から見ていきましょう。

GitHubの使用方法

GitHubは、世界中の開発者やプログラマーにとって不可欠なツールです。GitHubを使用すれば、コードの一元管理が可能になり、参照しやすくなるだけでなく、他の開発者との共同作業も容易になります。

GitHubのロゴ
GitHubのロゴ

コードに加えられた変更の追跡や、以前のバージョンの復元なども可能です。Issue(タスク)管理もできるため、コードベースのメンテナンスも捗ります。

リモートのバージョン管理システム(VCS)としてのGitHubには、共同作業の面で大きなメリットがあり、コードの共有、変更の追跡、問題の解決を複数人で実行できます。これはプロジェクトの効率化とコードの質の向上につながります。

また、コードベースの複数のバージョンを管理し、変更を追跡して、必要であれば簡単にロールバック可能です。GitHubは、このように大規模なプロジェクトやオープンソースの共同作業に大きく貢献してくれるだけではありません。

単純な用途にも理想的で、例えばウェブ開発プロジェクトのコードを保存し、変更を加えた際にリモートで更新をプッシュ(反映)できます。継続的インテグレーション/継続的デリバリー(CI/CD)プロジェクトでは、GitHub Actionsによってビルド段階で自動化できます。

GitHub Actionsをワークフローに組み込む例
GitHub Actionsをワークフローに組み込む例

全体として、GitHubやGitLabのようなリモートVCSは、共同作業やバージョン管理など、開発ワークフローにおいて様々なメリットを提供してくれます。開発プロセスの合理化やコードの質の向上にも役立つため、GitHubへのプッシュは、日々の業務における重要なスキルになります。

ターミナル(コマンドライン)からGitHubにプッシュする方法

それでは、早速GitHubにプッシュする方法を見ていきます。仕組みも手順もシンプルです。

ただし、事前にプロジェクトを設定しておかないとエラーが発生する可能性があります。まずは、必要なツールとスキルを確認しておきましょう。

GitHubにプッシュするために必要なもの

リモートリポジトリを使用できるようにプロジェクトを設定し、プッシュをワークフローに組み込んでおくことが重要です。まずは、コードを保存するためのGitリポジトリが必要になります。リポジトリは、プロジェクトに関連するファイルを格納するフォルダを意味します。

バージョン管理のプロセスは、お使いのコンピュータ上のローカル環境から始まります。具体的な手順(またはアクセス方法)は後ほどご説明しますが、すでにご存知かもしれません。

また、GitHubのアカウントも必要です。これについては、GitLabBitBucketBuddyなどの他の主要なオンラインVCSを使用してもOKです。この後ご説明する手順は、基本的に他のプラットフォームにも適用可能です(各サービスの比較はまた別の機会に)。

GitHubにコードをプッシュするには、コマンドラインかグラフィカルユーザインタフェース(GUI)のどちらかを使用します。後者については、ものによって方法が異なるため、特定のアプリを選んで使用してください。

そして最後に、自分のリポジトリに適切にアクセスできるようにしておくことも重要です。GitHubの公式ドキュメントにある通り、HTTPSアクセストークン、またはSecure Shell(SSH)接続がなければ始まりません。

1. GitHubリポジトリを作成する

まず最初のステップは、GitHubにオンラインリポジトリを作成すること。コマンドラインから実行することもできますが、ウェブブラウザで簡単に作成可能です。

GitHubにログインまたはアカウントを作成したら、画面右上にある自分のプロフィールアバターの横にある「」ドロップダウンメニューを開きます。すると、以下のように「New repository」を含めいくつかの項目が表示されます。

GitHubで新規リポジトリを作成
GitHubで新規リポジトリを作成

New repository」をクリックすると、「Create a New Repository」ページが表示されます。このページで、新規リモートリポジトリの設定を行います。

GitHubで新規リポジトリを設定
GitHubで新規リポジトリを設定

設定についてはプロジェクトの要件によって異なりますが、すでにGitHubにプッシュするローカルリポジトリをお持ちの場合は、ローカルとリモートの間の整合性を維持するため、できるだけ項目にチェックは入れないようにしてください。

設定を終えたら、「Create repository」をクリックします。すると、リモートにリンクする新規ローカルリポジトリをコマンドラインで設定する方法が記載されたリポジトリのトップページが表示されます。ここからの手順は、まだリポジトリを持っていない場合、または既存のプロジェクトの内容を複製したい場合によって異なります。

すでにGitを初期化し、ローカルリポジトリを作成している場合は、以下のステップ2を飛ばして3に進んでください。そうでない場合は、次のステップに進みましょう。

2-1.リモートリポジトリを複製する

ローカルリポジトリがない場合は、上で作成したGitHub版のリポジトリのみが存在している状態になります。複製するには、コンピュータ上でgit cloneコマンドを使用します。ただし、これにはリポジトリのURLが必要です。

URLを取得するには、GitHub内のリポジトリを開き、ファイル一覧の上にある緑色の「Code」ドロップダウンを開きます。

GitHubのCodeドロップダウンメニューを開く
GitHubのCodeドロップダウンメニューを開く

これが表示されない場合は、レポジトリが作成されていない可能性があります。画面上部にある青色の「Quick setup」セクションクでリポジトリのURLをコピーすることもできます。「HTTPS」をクリックして選択し、URLをコピーするだけでOKです。

クイック設定でGitHubのリポジトリのURLをコピー
クイック設定でGitHubのリポジトリのURLをコピー

上記の手順でも実行可能ではありますが、.gitignoreファイルを生成する方法をお勧めします。gitignore.ioを使って使用しているツールを検索し、.gitignoreファイルを作成して、リポジトリにアップロードすることができます。

gitignore.ioのサイト
gitignore.ioのサイト

Code」ドロップダウンが表示されれば、開いてURLをコピーできます。HTTPSやSSHなどから選択可能ですが、HTTPSのURLを使用するのがベストプラクティスです。URLの横にあるコピーアイコンをクリックしましょう。

続いて、ターミナルまたはコマンドラインアプリケーションに移動して、以下を実行します。

git clone <full-github-url>

これでGitがリモートリポジトリをローカル環境にコピーします。

2-2. ローカルリポジトリを初期化する

リモートリポジトリのローカル版がない状態で始める場合は、ローカルリポジトリの初期化も必要になります。今後はローカル環境で作業し、定期的にリモートサーバーに変更をプッシュすることになります。手順は以下のとおりです。

  1. プロジェクトに使用したいフォルダにcdする。
  2. git initコマンドを実行する。これによってローカルのプロジェクトフォルダでGitが初期化され、隠し.gitディレクトリが生成される。
  3. .gitignoreファイルをプロジェクトのローカルフォルダのルートに追加(システムファイルに関連する変更をステージしないようにするため)。

その後、現在のファイルのインデックスを作成します。一般的な方法としては、git addを使用します。その後、変更をコミットしましょう。

git add .

git commit -m “Initial Commit”

git branch -M trunk

最後の行は、まだmasterブランチから切り替えていない場合、メインとなるブランチを別のものに変更します(Black Lives Matterの運動を受け、「master」という奴隷制度を連想させるこの表現は「main」などの別の用語に変更することが公式に推奨されています)。上の例では、trunkを使用しましたが、mainでもOKです。また、この行が必要でない場合は省略しても構いません。

これで、GitHubにプッシュする準備が整いました。

3. originを追加してコードをGitHubにプッシュする

GitHubでリモートリポジトリを作成したら、ローカルリポジトリに「origin」を追加します。originはリモートリポジトリのURLを意味し、ローカルリポジトリが上流の変更をどこに送るかどうかを指定するのが目的です。

ターミナルに次のコマンドを貼り付けます。

git remote add origin <github-url>

originの名前は好きなもので構いませんが、リモートリポジトリの追加に使用するのはこの1つだけであることから、一般に「origin」と呼ばれます。その後、次のコマンドを使ってGitHubにプッシュすることができます。

git push -u origin trunk

このコードは、新規リモートリポジトリ(名前は「origin」)にコードをプッシュし、上流ブランチを「trunk」に設定します。必要に応じて任意のブランチをリモートリポジトリにプッシュ可能です。

ターミナルでgit pushコマンドを実行
ターミナルでgit pushコマンドを実行

操作が完了したら、適切にプッシュが行われているかどうかを確認します。これにはいくつか方法があり、例えば、GitHubのリポジトリにアクセスして変更が反映されているかを確認するのもひとつの手です。

GitHubでGitリポジトリのステータスを確認
GitHubでGitリポジトリのステータスを確認

コマンドラインからgit logを実行して確認することも可能です。

ターミナルでgit logコマンドを実行して出力を確認
ターミナルでgit logコマンドを実行して出力を確認

このコマンドを実行すると、先ほどプッシュしたものも含め、リポジトリのすべてのコミットが表示されます。このような感じで、ログ内にコミットがあれば適切にプッシュできている証拠です。

エラーなしでGitHubにプッシュする方法

GitHubにコードをプッシュしようとすると、時にエラーが発生することがあります。

git pushを実行してRSA鍵エラーが発生する例
git pushを実行してRSA鍵エラーが発生する例

このエラーは、すでに古いプロジェクトを通してGitHubにセキュアに接続しているにもかかわらず、古いRSA鍵を使用している場合に発生します。このエラーの解決方法はこちらで詳しくご紹介していますが、GitHubでこのエラーを解決するには、以下を実行します。

ssh-keygen -R github.com

これで 「既知のhostsファイル」が更新され、次のような確認メッセージが表示されます。

ターミナルを使って古いホストキーを削除
ターミナルを使って古いホストキーを削除

次に以下を実行して、既知のhostsファイルに最新のRSA鍵を追加します。

curl -L https://api.github.com/meta | jq -r '.ssh_keys | .[]' | sed -e 's/^/github.com /' >> ~/.ssh/known_hosts

ここでもjqパッケージに関するエラーが表示されることがあります。その場合は、オペレーティングシステムに応じて、以下のいずれかを実行してください。

  • Windowscurl -L -o /usr/bin/jq.exe https://github.com/stedolan/jq/releases/latest/download/jq-win64.exe
  • Macbrew install jq
  • Linuxapt-get update | apt-get -y install jq

インストール後、再度コマンドを実行し、完了するまで少し待ちます。

ターミナルを使用してRSA鍵を作成
ターミナルを使用してRSA鍵を作成

最後にもう一度git pushコマンドを実行すると、今度は成功するはずです。これでうまくいかない場合は、SSH鍵が正しくないか、専用の鍵を使って安全な接続を確立する必要があるかもしれません。GitHub用のSSH鍵を生成する方法はこちらをご覧ください。

GUIを使ってGitHubにコードをプッシュする方法

GitHubにコードをプッシュするワークフローは、一度設定してしまえば簡単ですが、考慮すべき手順や注意点、サブプロセスが多数あります。しかし、GUIを使えば、このプロセスを簡素化することができます。

例えば、コマンドラインの機能をすべて使用できるだけでなく、インターフェースもより洗練されています(場合によってはドラッグ&ドロップも可能)。変更を視覚的に管理することができるため、特にコマンドラインツールに慣れていない場合にはこちらの方法が適しているかもしれません。

GUIアプリを使って他のリモートVCSにアクセスする必要がないため、GitHub Desktopはぴったりの選択肢です。

GitHub Desktop
GitHub Desktop

このアプリケーションでは、リポジトリの作成と管理、変更のコミット、GitHubへのプッシュを数クリックで行うことができます。さらにドラッグ&ドロップで操作でき、バージョン間のコード変更を簡単に識別できる差分ビュー機能も。

GitHub Desktopでコミットの差分を表示
GitHub Desktopでコミットの差分を表示

Sourcetreeも人気のあるGit GUIクライアントです(おすすめのウェブ開発ツールはこちら)。推奨されるVCSはBitBucketですが(Atlassian製品のため)、GitHubでも使用可能です。マージ競合の解決ツールは画期的な機能のひとつです。

GitKrakenもまた、必ず名の挙がる優れたGITクライアントで、ローカルとパブリックのリポジトリ用に無料版を提供しています。GitHubはもちろん、GitLabやBitBucketなど、主要なVCSにすべて対応しています。リポジトリを視覚的に扱うことができ、共同作業を考慮した機能が揃っています。

GitHub Desktopを使ってGitHubにプッシュする方法

アプリによって手順は多少異なりますが、GitHub Desktopではスムーズに実行可能です。さまざまなウィンドウやパネルが揃ったひとつの画面で作業を行います。ファイル(右クリックのコンテキストメニューから任意のエディター開くことができる)に変更を加えたら、画面上の小さなウィジェットでコミットします。

GitHub Desktopで変更をコミット
GitHub Desktopで変更をコミット

このコミットは、上のツールバーの「Push Origin」セクションの一部に。コミットする変更がない場合は、コミットをリモートリポジトリにプッシュする通知も表示されます。

GitHub Desktopでoriginリモートリポジトリに変更をプッシュ
GitHub Desktopでoriginリモートリポジトリに変更をプッシュ

GitHubリポジトリに変更をワンクリックでプッシュできるため、全体のワークフローはかなり高速になり、簡単に実行できます。

KinstaのアプリケーションホスティングでGitHubを使用する方法

Kinstaでは、アプリケーションのすべてをホストすることができます。アプリケーション&データベースホスティングでは、PHP、Node、Pythonといったあらゆる言語のアプリケーションをデプロイ可能です。また、GitHubへの接続にGitコマンドのホスティングは不要です。

まずは、MyKinstaにログイン後「アプリケーション」画面を開きます。初めてアクセスする場合は、設定などのメニューがまだ何もない状態のページが表示されます。

MyKinstaのアプリケーション画面
MyKinstaのアプリケーション画面

サービスを追加」をクリックすると、アプリケーションまたはデータベースのいずれかを選択できます。今回の例では、「アプリケーション」を選択します。

アプリケーション画面で「サービスを追加」ボタンをクリック
アプリケーション画面で「サービスを追加」ボタンをクリック

GitHubからリポジトリをインポートするため、GitHubへの接続を促すウィンドウが表示されます。

GitHubと接続してセットアップを続行
GitHubと接続してセットアップを続行

次に表示されるウィザードで、アプリケーションをセットアップします。まずはGitHubからリポジトリを選択して、デフォルトのブランチを選びます。

「アプリケーションの追加」ウィザードでデプロイするアプリの詳細を設定
「アプリケーションの追加」ウィザードでデプロイするアプリの詳細を設定

また、MyKinsta上でのアプリケーション名も設定し、データセンターを選択します。その後「続行」をクリックしたら、ビルド環境の設定を調整します。

ビルド環境の設定
ビルド環境の設定

このステップでは、以下の選択肢があります。

  • ドロップダウンメニューからビルドマシンを選択
  • 自動化するか、独自の特定のパスからコンテナイメージをセットアップ

次に、リソースとプロセスをセットアップします。活用例のドキュメントにて、必要な関連ウェブプロセスをご紹介していますが、独自で設定することも可能です。なお、予算に制限がない限り、無限にプロセスを設定できてしまう点には注意してください。

リソースの指定
リソースの指定

最後に、毎月の利用料金を確認し、支払い手続きに進みます。これで、GitHubと統合されたアプリケーションホスティングをお使いいただけます。アプリケーション&データベースホスティングの詳細についてはこちらをご覧ください。

まとめ

GitHubは、コードの保存、追跡、共同作業を行うための中央集権型のリポジトリを提供するもので、開発者やプログラマーなら誰もが利用することになるツールです。ローカルリポジトリからGitHubにコードをプッシュする方法を学べば、チームメンバーと共同作業を行えるようになります。

コマンドラインでもGitHubへのコードのプッシュは簡単に実行できますが、GitKrakenGitHub Desktopなどの専用グラフィカルユーザインタフェース(GUI)クライアントを使用する方法もお勧めです。コマンドラインを使わずに、直感的なインターフェイスでGitのほぼすべてのタスクを実行できます。

また、GitHubはKinstaのアプリケーション&データベースホスティングとも接続できます。GitHubのリポジトリを世界25箇所にあるデータセンターネットワークに接続し、多様なフレームワークをサポートすることが可能です。料金プランは、使用したリソースに応じて柔軟にカスタマイズでき、手頃な価格になっています。

その他、GitHubへのプッシュ方法についてご不明な点がありましたら、下のコメント欄でお知らせください。

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。