個人でローカルリポジトリを使用してバージョン管理を行うのは比較的簡単です。しかし多くのプロジェクトでは、複数名でGitHubなどのサービスを利用し、リソースをリモートリポジトリに集約するのが一般的。したがって、GitHubへのプッシュ方法を習得することが欠かせません。
ということで、今回はコマンドラインを使用してGitHubにプッシュする方法、そしてこのプロセスを楽にしてくれる専用アプリをご紹介します。まずは、GitHubの使い方から見ていきましょう。
GitHubの使用方法
GitHubは、世界中の開発者やプログラマーにとって不可欠なツールです。GitHubを使用すれば、コードの一元管理が可能になり、参照しやすくなるだけでなく、他の開発者との共同作業も容易になります。

コードに加えられた変更の追跡や、以前のバージョンの復元なども可能です。Issue(タスク)管理もできるため、コードベースのメンテナンスも捗ります。
リモートのバージョン管理システム(VCS)としてのGitHubには、共同作業の面で大きなメリットがあり、コードの共有、変更の追跡、問題の解決を複数人で実行できます。これはプロジェクトの効率化とコードの質の向上につながります。
また、コードベースの複数のバージョンを管理し、変更を追跡して、必要であれば簡単にロールバック可能です。GitHubは、このように大規模なプロジェクトやオープンソースの共同作業に大きく貢献してくれるだけではありません。
単純な用途にも理想的で、例えばウェブ開発プロジェクトのコードを保存し、変更を加えた際にリモートで更新をプッシュ(反映)できます。継続的インテグレーション/継続的デリバリー(CI/CD)プロジェクトでは、GitHub Actionsによってビルド段階で自動化できます。

全体として、GitHubやGitLabのようなリモートVCSは、共同作業やバージョン管理など、開発ワークフローにおいて様々なメリットを提供してくれます。開発プロセスの合理化やコードの質の向上にも役立つため、GitHubへのプッシュは、日々の業務における重要なスキルになります。
ターミナル(コマンドライン)からGitHubにプッシュする方法
それでは、早速GitHubにプッシュする方法を見ていきます。仕組みも手順もシンプルです。
ただし、事前にプロジェクトを設定しておかないとエラーが発生する可能性があります。まずは、必要なツールとスキルを確認しておきましょう。
GitHubにプッシュするために必要なもの
リモートリポジトリを使用できるようにプロジェクトを設定し、プッシュをワークフローに組み込んでおくことが重要です。まずは、コードを保存するためのGitリポジトリが必要になります。リポジトリは、プロジェクトに関連するファイルを格納するフォルダを意味します。
バージョン管理のプロセスは、お使いのコンピュータ上のローカル環境から始まります。具体的な手順(またはアクセス方法)は後ほどご説明しますが、すでにご存知かもしれません。
また、GitHubのアカウントも必要です。これについては、GitLabやBitBucket、Buddyなどの他の主要なオンラインVCSを使用してもOKです。この後ご説明する手順は、基本的に他のプラットフォームにも適用可能です(各サービスの比較はまた別の機会に)。
GitHubにコードをプッシュするには、コマンドラインかグラフィカルユーザインタフェース(GUI)のどちらかを使用します。後者については、ものによって方法が異なるため、特定のアプリを選んで使用してください。
そして最後に、自分のリポジトリに適切にアクセスできるようにしておくことも重要です。GitHubの公式ドキュメントにある通り、HTTPSアクセストークン、またはSecure Shell(SSH)接続がなければ始まりません。
1. GitHubリポジトリを作成する
まず最初のステップは、GitHubにオンラインリポジトリを作成すること。コマンドラインから実行することもできますが、ウェブブラウザで簡単に作成可能です。
GitHubにログインまたはアカウントを作成したら、画面右上にある自分のプロフィールアバターの横にある「+」ドロップダウンメニューを開きます。すると、以下のように「New repository」を含めいくつかの項目が表示されます。

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

設定についてはプロジェクトの要件によって異なりますが、すでにGitHubにプッシュするローカルリポジトリをお持ちの場合は、ローカルとリモートの間の整合性を維持するため、できるだけ項目にチェックは入れないようにしてください。
設定を終えたら、「Create repository」をクリックします。すると、リモートにリンクする新規ローカルリポジトリをコマンドラインで設定する方法が記載されたリポジトリのトップページが表示されます。ここからの手順は、まだリポジトリを持っていない場合、または既存のプロジェクトの内容を複製したい場合によって異なります。
すでにGitを初期化し、ローカルリポジトリを作成している場合は、以下のステップ2を飛ばして3に進んでください。そうでない場合は、次のステップに進みましょう。
2-1.リモートリポジトリを複製する
ローカルリポジトリがない場合は、上で作成したGitHub版のリポジトリのみが存在している状態になります。複製するには、コンピュータ上でgit cloneコマンドを使用します。ただし、これにはリポジトリのURLが必要です。
URLを取得するには、GitHub内のリポジトリを開き、ファイル一覧の上にある緑色の「Code」ドロップダウンを開きます。

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

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

「Code」ドロップダウンが表示されれば、開いてURLをコピーできます。HTTPSやSSHなどから選択可能ですが、HTTPSのURLを使用するのがベストプラクティスです。URLの横にあるコピーアイコンをクリックしましょう。
続いて、ターミナルまたはコマンドラインアプリケーションに移動して、以下を実行します。
git clone <full-github-url>
これでGitがリモートリポジトリをローカル環境にコピーします。
2-2. ローカルリポジトリを初期化する
リモートリポジトリのローカル版がない状態で始める場合は、ローカルリポジトリの初期化も必要になります。今後はローカル環境で作業し、定期的にリモートサーバーに変更をプッシュすることになります。手順は以下のとおりです。
- プロジェクトに使用したいフォルダに
cd
する。 git init
コマンドを実行する。これによってローカルのプロジェクトフォルダでGitが初期化され、隠し.gitディレクトリが生成される。- .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」に設定します。必要に応じて任意のブランチをリモートリポジトリにプッシュ可能です。

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

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

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

このエラーは、すでに古いプロジェクトを通して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パッケージに関するエラーが表示されることがあります。その場合は、オペレーティングシステムに応じて、以下のいずれかを実行してください。
- Windows:
curl -L -o /usr/bin/jq.exe https://github.com/stedolan/jq/releases/latest/download/jq-win64.exe
- Mac:
brew install jq
- Linux:
apt-get update | apt-get -y install jq
インストール後、再度コマンドを実行し、完了するまで少し待ちます。

最後にもう一度git push
コマンドを実行すると、今度は成功するはずです。これでうまくいかない場合は、SSH鍵が正しくないか、専用の鍵を使って安全な接続を確立する必要があるかもしれません。GitHub用のSSH鍵を生成する方法はこちらをご覧ください。
GUIを使ってGitHubにコードをプッシュする方法
GitHubにコードをプッシュするワークフローは、一度設定してしまえば簡単ですが、考慮すべき手順や注意点、サブプロセスが多数あります。しかし、GUIを使えば、このプロセスを簡素化することができます。
例えば、コマンドラインの機能をすべて使用できるだけでなく、インターフェースもより洗練されています(場合によってはドラッグ&ドロップも可能)。変更を視覚的に管理することができるため、特にコマンドラインツールに慣れていない場合にはこちらの方法が適しているかもしれません。
GUIアプリを使って他のリモートVCSにアクセスする必要がないため、GitHub Desktopはぴったりの選択肢です。

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

Sourcetreeも人気のあるGit GUIクライアントです(おすすめのウェブ開発ツールはこちら)。推奨されるVCSはBitBucketですが(Atlassian製品のため)、GitHubでも使用可能です。マージ競合の解決ツールは画期的な機能のひとつです。
GitKrakenもまた、必ず名の挙がる優れたGITクライアントで、ローカルとパブリックのリポジトリ用に無料版を提供しています。GitHubはもちろん、GitLabやBitBucketなど、主要なVCSにすべて対応しています。リポジトリを視覚的に扱うことができ、共同作業を考慮した機能が揃っています。
GitHub Desktopを使ってGitHubにプッシュする方法
アプリによって手順は多少異なりますが、GitHub Desktopではスムーズに実行可能です。さまざまなウィンドウやパネルが揃ったひとつの画面で作業を行います。ファイル(右クリックのコンテキストメニューから任意のエディター開くことができる)に変更を加えたら、画面上の小さなウィジェットでコミットします。

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

GitHubリポジトリに変更をワンクリックでプッシュできるため、全体のワークフローはかなり高速になり、簡単に実行できます。
KinstaのウェブアプリケーションサーバーでGitHubを使用する方法
Kinstaでは、アプリケーションのすべてをホストすることができます。アプリケーション&マネージドデータベースサーバーでは、PHP、Node、Pythonといったあらゆる言語のアプリケーションをデプロイ可能です。また、GitHubへの接続にGitコマンドのホスティングは不要です。
まずは、MyKinstaにログイン後「アプリケーション」画面を開きます。初めてアクセスする場合は、設定などのメニューがまだ何もない状態のページが表示されます。

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

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

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

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

このステップでは、以下の選択肢があります。
- ドロップダウンメニューからビルドマシンを選択
- 自動化するか、独自の特定のパスからコンテナイメージをセットアップ
次に、リソースとプロセスをセットアップします。活用例のドキュメントにて、必要な関連ウェブプロセスをご紹介していますが、独自で設定することも可能です。なお、予算に制限がない限り、無限にプロセスを設定できてしまう点には注意してください。

最後に、毎月の利用料金を確認し、支払い手続きに進みます。これで、GitHubと統合されたウェブアプリケーションサーバーをお使いいただけます。アプリケーション&マネージドデータベースサーバーの詳細についてはこちらをご覧ください。
まとめ
GitHubは、コードの保存、追跡、共同作業を行うための中央集権型のリポジトリを提供するもので、開発者やプログラマーなら誰もが利用することになるツールです。ローカルリポジトリからGitHubにコードをプッシュする方法を学べば、チームメンバーと共同作業を行えるようになります。
コマンドラインでもGitHubへのコードのプッシュは簡単に実行できますが、GitKrakenやGitHub Desktopなどの専用グラフィカルユーザインタフェース(GUI)クライアントを使用する方法もお勧めです。コマンドラインを使わずに、直感的なインターフェイスでGitのほぼすべてのタスクを実行できます。
また、GitHubはKinstaのアプリケーション&マネージドデータベースサーバーとも接続できます。GitHubのリポジトリを世界25箇所にあるデータセンターネットワークに接続し、多様なフレームワークをサポートすることが可能です。料金プランは、使用したリソースに応じて柔軟にカスタマイズでき、手頃な価格になっています。
その他、GitHubへのプッシュ方法についてご不明な点がありましたら、下のコメント欄でお知らせください。
コメントを残す