【初心者向け】git pushコマンドの使い方を徹底解説!リモートリポジトリへのプッシュ方法
git pushコマンドは、ローカルリポジトリの内容をリモートリポジトリへアップロードするためのコマンドです。プッシュは、変更内容をリモートリポジトリに反映させるための仕組みであり、一度プッシュを行えば、プロジェクトに参加しているすべてのメンバーがその変更をダウンロードできるようになります。
コードをリモートリポジトリにプッシュすることは、Gitリポジトリに対して行った変更を「保存」する最終段階にあたります。
プッシュの処理では、コードがローカルリポジトリ(自分のPC)から、ローカルのコードと紐づけられたリモートリポジトリへと転送されます。これにより、コードベースへの変更内容をプロジェクトのメインリポジトリに保存できます。
この記事では、実際のコード例を交えながら、プッシュの基本とgit pushコマンドの使い方を解説します。読み終える頃には、git pushコマンドを使いこなせるようになっているはずです。
Gitにおけるコードのプッシュとは
Gitでは、ファイルの保存のように簡単に変更を「保存」することはできません。Gitリポジトリ内のファイルを保存しても、その変更は自分のPC上に記録されるだけで、Gitリポジトリには追跡されません。変更をGitに追跡させるには、明示的に指示する必要があります。
変更を追跡するには、まずgit addコマンドでコードをステージングエリアに追加します。その後、git commitコマンドを使って、行った変更をコミットとして記録します。
コードをコミットすると、変更内容の記録が追跡されるようになります。コミット内容をリモートリポジトリに反映させたい場合は、コミットを作成した後にコードをプッシュする必要があります。
プッシュを行うことで、ローカルリポジトリで作成したコミットをリモートリポジトリへ送信できます。たとえば、チームでプロジェクトを進めている場合、まず自分のPC上でコミットを作成します。そして、コードをみんなに見せる準備ができたら、リモートリポジトリにプッシュすることで、すべてのメンバーがそのコードを確認できるようになります。
git pushコマンドの基本的な使い方
git pushコマンドは、ローカルリポジトリでの変更内容をリモートリポジトリにアップロードします。アップロードされた変更は、プロジェクトのすべてのメンバーが閲覧・ダウンロードできるようになります。
ある意味で、git pushはgit fetchの逆の操作です。git fetchコマンドはリモートリポジトリに加えられた変更を取得し、その変更をローカルのリポジトリのコピーに反映させるために使われます。
git pushコマンドの構文は以下のとおりです。
git push <リモート名> <ブランチ名>
「リモート名」パラメータには、コードをプッシュする先のリポジトリを指定します。すでにリポジトリを設定済みであれば、通常は「origin」が設定されています。別のリポジトリにプッシュしたい場合は、「リモート名」パラメータで指定できます。
「ブランチ名」パラメータには、変更をプッシュしたいリモートリポジトリのブランチを指定します。
たとえば、ローカルリポジトリの変更をリモートリポジトリの「master」ブランチにプッシュしたい場合は、次のコマンドを実行します。
git push origin master
このコマンドを実行すると、以下のような出力が返されます。
Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 363 bytes | 363.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) To https://github.com/jamesgallagher432/demo-repository.git 3b16026..b53b22d master -> master
この例では、リモートリポジトリはGitHub上に保存されています。ローカルリポジトリに行った変更が、プロジェクトに関連付けられたGitHubのリモートリポジトリへプッシュされました。
これで変更のプッシュが完了し、ローカルマシン上のコードとリモートリポジトリのコードが同じ状態になりました。コードはリモートリポジトリで公開されているため、チームメンバーも自分の行った変更を確認できます。
なお、「master」ではなく「v1.9」というブランチにコードをプッシュしたい場合は、ブランチ名として「v1.9」を指定すればOKです。
強制プッシュ(--forceオプション)の使い方
git pushコマンドを使用する際、変更をリモートリポジトリに強制的にプッシュしたい場合があるかもしれません。
Gitでは、リモートとローカルの履歴に競合がある場合、リポジトリへのプッシュが拒否されます。たとえば、リモートリポジトリにローカルマシンに反映されていないコミットが10件ある場合、コードをプッシュすることはできません。
「--force」フラグを使うと、リポジトリへの変更を「強制プッシュ」できます。このフラグを使うと、最後にリポジトリからコードをプルして以降に発生した変更はすべて削除されることに注意してください。
--forceフラグは、プッシュ時にミスがあり、それを修正した場合などにのみ使用すべきです。それ以外の場合は、このコマンドの使用は避けましょう。これにより、Gitリポジトリに意図しない変更を加えてしまうリスクを回避できます。
--forceフラグの構文は以下のとおりです。
git push <リモート名> <ブランチ名> --force
このコマンドを実行すると、コードが強制的にプッシュされ、発生した可能性のあるエラーは無視されます。
git push origin masterの実例
ここからは、git pushコマンドを使用する典型的なシナリオを実際に見ていきましょう。
ローカルのコードにいくつか変更を加え、それをリモートリポジトリにプッシュしたいとします。変更内容はすでにgit commitでコミット済みです。コードをプッシュするには、以下の手順に従います。
まず、masterブランチに移動し、最新の状態になっていることを確認します。ローカルのmasterブランチは、変更を加えたブランチです。masterブランチへの移動は以下のコマンドで行えます。
git checkout master git fetch origin master
git checkoutコマンドで「master」ブランチに移動し、git fetchでリモートリポジトリの最新版を取得します。
次に、masterブランチへの変更をコミットとして記録します。
git add README.md git commit -m "feat: READMEを修正"
README.mdファイルをステージングエリアに追加し、その後コミットを作成しました。コミットメッセージは「feat: READMEを修正」です。このコミットは現時点ではローカルブランチに保存されています。
続いて、git pushを実行してコードをプッシュします。
git push origin master
このコマンドを実行すると、ローカルリポジトリのコードがリモートリポジトリへプッシュされます。プッシュ前にコードが最新かどうかを確認しているため、git pushコマンドからエラーが返されることはないはずです。
まとめ
git pushコマンドは、ローカルのGitリポジトリからリモートリポジトリへ変更を「プッシュ」するために使用します。変更をプッシュすれば、そのコードベースで作業している全員があなたの貢献を確認できるようになります。
この記事では、コードのプッシュの基本とgit pushコマンドの使い方を解説しました。これであなたも、Gitのプロのようにリモートリポジトリへコードをプッシュできるはずです!
-
GitとGitHubの使い方入門:初心者向けステップバイステップガイド
GitHubは現在、世界最大のオープンソースプロジェクトホスティングサービスです。Atomテキストエディタ、GoogleのTensorFlow、Facebook(現Meta)のReactなど、有名なプロジェクトが多数公開されています。ビッグデータ、人工知能(AI)、IoTといった先進的な分野のプロジェクトで特に知られていますが、アニメーション、絵文字、ゲーム、シンプルなソフトウェアなども見つけることができます。仕組みは「トレント」にやや似ていますが、扱う対象がソフトウェアやアプリである点が異なります。 GitHubを使い始めたばかりの方にとって、学習曲線はかなり急に感じられるかもしれません。
-
【Git】「fatal: 'origin' does not appear to be a git repository」エラーの原因と解決方法
「fatal: origin does not appear to be a git repository」エラーとは Gitは、ソフトウェア開発時にソースコードへの変更を追跡するために使用される分散型バージョン管理システムです。また、GitHubはGitを利用したバージョン管理のためのオンラインホスティングサービスであり、どちらも開発現場で広く活用されています。しかし近年、Macのターミナルで「git」コマンドを実行しようとした際に、「fatal: origin does not appear to be a git repository(致命的:originがGitリポジトリではないようで