【完全版】git pushコマンドの使い方を実例付きで詳しく解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年8月)

✔当記事がお役に立つ方

「git pushの役割を知りたい」
「git pushコマンドの使い方が学びたい」
「git pushの具体的な例を見て理解したい」

✔当記事で目指す内容

  • git pushの基本理解
  • git pushコマンドの使い方とそのバリエーション
  • git pushの実使用例

当記事では、git pushの基本からそのさまざまなオプションを用いた使い方、具体的な例を通じて詳細に解説していきます。

どうぞ最後までお読みください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロジェクトマネージャー/SE(元外資系金融機関営業)

【副業】ブログ(月間15万PV)/YouTube/Web・アプリ制作

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Git Pushの概要 とGitHubへの設定

こちらでは、「Git Push」およびその設定について詳しく見ていきます。

基本を理解のうえ、より応用したやり方に進みましょう。

  • Gitとは?
  • Git Pushとその設定について

Gitとは?

Gitは、プログラマーやデザイナーなどがファイルの変更履歴を管理するためのバージョン管理システム(VCS)です。

ファイルがどのように変化してきたかを記録し、必要なときに特定のバージョンに戻せます。

また複数の人が一緒に作業する場合でも、各人が作成した変更を統合するのに役立つツールです。

Git Pushとその設定について

Gitのpushコマンドは、ローカルリポジトリの変更内容をリモートリポジトリに反映させるためのものです。

リモートリポジトリとは、GitHubなどのホスティングサービスにあるリポジトリのこと。

以下のコマンドを使用してリモートリポジトリを登録します。

git remote add リポジトリのURL

その後pushコマンドを使うことで反映させることができるようになるのです。

以下はその具体例。

# リモートリポジトリの設定
git remote add origin https://github.com/username/repository.git

# pushコマンドで反映
git push -u origin master

このコマンドで、ローカルリポジトリのmasterブランチの内容がGitHubのリポジトリに反映されます。

Pushの具体的な手順: リポジトリへのPush

ここでは、具体的にファイルを作成し、それをステージング、コミット、最後にpushする一連の手順を見ていきます。

  • コミット対象ファイルの作成
  • ステージングエリアへのファイル追加
  • ファイルをコミットする方法
  • Gitログの活用方法
  • GitHubへのプッシュ手順

コミット対象ファイルの作成

まず、コミットとpushの対象となる新しいファイルを作成しましょう。

以下のコマンドは、新しいテキストファイルexample.txtを作成します。

echo "This is an example file." > example.txt

ステージングエリアへのファイル追加

次に、作成したファイルをステージングエリアに追加します。

このエリアは、次にコミットする変更を一時的に保存する場所です。

以下のコマンドでファイルを追加します。

git add example.txt

補足として、以下の場面別に使えるコマンドも覚えておきましょう。

  • ファイルがステージングエリアに追加されていない場合
  • ステージからファイルの解除方法

ファイルがステージングエリアに追加されていない場合

ファイルが正しくステージングエリアに追加されているか確認するには、git statusコマンドを使用します。

このコマンドは、現在のブランチやステージングエリアの状態、未コミットの変更など、リポジトリの状態を表示します。

git status

ステージからファイルの解除方法

間違えてファイルをステージングエリアに追加した場合、git resetコマンドを使用して解除できます。

以下のコマンドでexample.txtをステージングエリアから解除してください。

git reset example.txt

ファイルをコミットする方法

ファイルがステージングエリアに追加されたら、次にコミットをおこないましょう。

コミットは、ステージングエリアの変更をローカルリポジトリに保存する行為です。

git commitコマンドに、-mオプションを付けることで、コミットメッセージを一緒に記述できます。

git commit -m "Add example.txt"

Gitログの活用方法

コミットが正常に行われたことを確認するためには、git logコマンドを使用します。

このコマンドは、コミット履歴を表示するもの。

出力には、コミットのハッシュ、作者、日付、コミットメッセージなどが含まれます。

git log

GitHubへのプッシュ手順

最後に、変更をリモートリポジトリにpushします。

これにより、GitHubなどのリモートリポジトリにローカルリポジトリの変更が反映されます。

以下のコマンドでリモートリポジトリ(ここではoriginという名前)のmasterブランチにpushします。

git push origin master

Push成功の確認方法

pushが正常に行われたことを確認するための手順を学びます。

具体的には、GitHubでのコミット確認手順を説明します。

  • 対象のリポジトリにアクセス
  • Commitsをクリック
  • リポジトリのコミット履歴を確認

対象のリポジトリにアクセス

確認したいリポジトリにアクセスしましょう。

Commitsをクリック

リポジトリの右上、Commitsをクリックしてください。

リポジトリのコミット履歴を確認

コミット履歴がコメントと一緒に表示されます。

ブランチとPushの関係性

ブランチとPushの関係性をご覧いただきます。

ブランチとPushについて詳しく理解することが、効率的にコードを管理するために重要です。

  • ブランチ指定によるPush方法
  • 更新対象リモートブランチ指定によるPush方法
  • 引数省略時の上流ブランチへのPush方法

ブランチ指定によるPush方法

Gitでは、作業ブランチを指定してPushすることが可能です。

以下のコマンドでは、ローカルブランチ(ここではfeatureブランチ)を、リモートリポジトリのmasterブランチにPushするコマンドです。

git push origin feature:master

このコマンドは、originというリモートリポジトリのmasterブランチに、featureブランチの内容をPushします。

更新対象リモートブランチ指定によるPush方法

特定のリモートブランチだけを更新する場合は、以下のようにブランチ名を指定します。

git push origin feature

このコマンドは、originというリモートリポジトリのfeatureブランチに、現在のブランチの内容をPushします。

引数省略時の上流ブランチへのPush方法

Pushの引数を省略した場合、現ブランチの上流ブランチ(トラッキングブランチ)にPushされます。

git push

上流ブランチは、事前にgit push -u origin featureのように設定しておくことが可能です。

Pushの細かな操作方法

ここでは、より高度なgit push操作について説明します。

使いこなすために必要な知識です。

  • 引数をすべて省略した場合の振る舞い
  • 具体的なpush方針と設定値
  • 強制的なPushの方法とリモートブランチの上書き方法
  • フックの活用

引数をすべて省略した場合の振る舞い

git pushの引数をすべて省略した場合の振る舞いはgitの設定や現在のブランチによります。

デフォルトでは、現在チェックアウトしているブランチの上流ブランチに対してpushが行われます。

git push

具体的なpush方針と設定値

gitでは、pushの振る舞いを制御するための方針を設定できます。

git config –global push.default <option>

オプションには以下のような選択肢があります。

  1. Simple(デフォルト)
    現在のブランチとリモートリポジトリの同名のブランチとの間でのみプッシュをおこなう。
  2. Matching
    ローカルリポジトリとリモートリポジトリの間で名前が一致する全てのブランチをプッシュする。
  3. Nothing
    pushが何もプッシュしないように設定。明示的にブランチを指定する必要があります。
  4. Current
    現在のブランチだけをプッシュ。リモートに同じ名前のブランチがない場合はエラーとなります。
  5. Upstream
    現在のブランチの上流ブランチに対してプッシュ。
  6. Track
    現在のブランチと同じ名前のリモートブランチに対してプッシュ。存在しない場合は新しいリモートブランチが作成されます。

例えば、名前が一致する全てのブランチをpushする設定は以下の通りです。

git config push.default matching

強制的なPushの方法とリモートブランチの上書き方法

既にリモートに存在するブランチを無視して強制的にpushしたい場合は、--forceオプションを使用します。

git push --force origin feature

しかし、他の開発者がその間に新たなコミットをpushしていた場合、それらの変更は失われる可能性があるため、--forceは注意深く使用する必要があります。

フックの活用

gitには、特定のイベントが発生したときに実行されるスクリプト(フック)を設定できます。

これを利用して、例えばpush前にテストを自動実行するなど、柔軟な操作が可能です。

Gitフックはプロジェクトの .git/hooks ディレクトリに格納されており、サンプルとして多くのフックが既に存在します。

以下は、主要なGitフックとそれぞれの例です。

1. pre-commit

コミットが作成される前に実行されます。

コーディングスタイルのチェックなどに使用可能です。

: コードが特定のコーディングガイドラインに従っていることを確認

#!/bin/sh
exec ./path/to/code-style-checker

2. post-commit

コミットが作成された後に実行されます。通知の送信などに使用することができます。

: コミットが完了したら通知を送る

#!/bin/sh
exec ./path/to/send-notification "New commit created!"

3. pre-push

プッシュが行われる前に実行されます。テストの実行などに使用することができます。

: プッシュ前にテストを実行

#!/bin/sh
exec ./path/to/run-tests

4. post-receive

リモートリポジトリで変更を受け取った後に実行されます。デプロイなどに使用することができます。

: リモートサーバーにデプロイ

#!/bin/sh
exec ./path/to/deploy-to-server

これらのフックを活用することで、プロジェクトの特定のニーズに合わせたカスタム動作を自動的に実行することが可能です。

コーディングスタンダードの強制、自動テスト、自動デプロイなど、さまざまな用途で使用できます。

Git push コマンドの主要なオプション

次に、git pushの様々なオプションを詳細に見ていきます。

それぞれのオプションがどのような役割を持ち、どのような状況で使うべきなのかを理解しましょう。

  • –force: 強制的なプッシュ
  • –force-with-lease: ローカルが新しいときだけ強制
  • -u, –set-upstream: 上流ブランチの設定
  • –all: すべてのブランチをpushする方法
  • –delete: ブランチ削除方法
  • –prune: リモートに存在しないブランチの削除
  • –tag: 全タグをpushする方法

–force: 強制的なプッシュ

前述した通り、--forceオプションは既にリモートに存在するブランチを無視して強制的にpushします。

ほかの人のコミットを上書きする可能性があるため、注意して使用しましょう。

git push --force origin <branch>

–force-with-lease: ローカルが新しいときだけ強制

--force-with-leaseオプションは、ローカルリポジトリがリモートリポジトリよりも新しい場合にのみ強制的にpushします。

これは、他の人が新たなコミットをpushした可能性がある場合、その変更を上書きするのを防ぐためのものです。

git push --force-with-lease origin <branch>

-u, –set-upstream: 上流ブランチの設定

-uまたは--set-upstreamオプションを使うと、pushしたブランチを現在のブランチの上流(デフォルトのリモート)として設定します。

これにより、そのブランチをpushやpullするときにリモート名とブランチ名を指定する必要がなくなります。

git push -u origin <branch>

–all: すべてのブランチをpushする方法

--allオプションを使用すると、すべてのブランチをリモートリポジトリにpushします。

git push --all origin

–delete: ブランチ削除方法

リモートのブランチを削除するには、--deleteオプションを使用します。

git push origin --delete <branch>

–prune: リモートに存在しないブランチの削除

ローカルの参照がリモートに存在しない場合、その参照を削除するには--pruneオプションを使用します。

git push origin --prune

–tag: 全タグをpushする方法

--tagsオプションを使用すると、ローカルの全てのタグをリモートリポジトリにpushします。

git push origin --tags

まとめ

Gitのpush機能は、チームでの協力作業に欠かせないツールです。

その基本的な概念と使用方法について、以下をご説明しました。

  • 基本的なPush操作: 作成したコミットをリモートリポジトリにPushする基本的なステップ
  • Pushとブランチ: どのブランチをどのリモートリポジトリにPushするかを制御する方法
  • Pushの細かな操作方法: 強制的なPushやリモートブランチの削除など、細かな操作方法
  • 主要なオプション: さまざまなgit pushコマンドのオプションとその使用方法

また以下に、基本的なgit pushの手順をまとめておきます。

  1. ファイルを作成または変更します。
  2. git addコマンドを使って、変更したファイルをステージングエリアに追加します。
  3. git commitコマンドを使って、変更をコミットします。
  4. git pushコマンドを使って、コミットをリモートリポジトリにpushします。

ここまでの内容を確認して、git pushの基本操作とそのオプションを理解し、日々の開発作業に活用してください。

タイトルとURLをコピーしました