(最終更新日:2023年8月)
✔当記事がお役に立つ方
「git pushの役割を知りたい」
「git pushコマンドの使い方が学びたい」
「git pushの具体的な例を見て理解したい」
✔当記事で目指す内容
- git pushの基本理解
- git pushコマンドの使い方とそのバリエーション
- git pushの実使用例
当記事では、git pushの基本からそのさまざまなオプションを用いた使い方、具体的な例を通じて詳細に解説していきます。
どうぞ最後までお読みください。
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>
オプションには以下のような選択肢があります。
- Simple(デフォルト)
現在のブランチとリモートリポジトリの同名のブランチとの間でのみプッシュをおこなう。 - Matching
ローカルリポジトリとリモートリポジトリの間で名前が一致する全てのブランチをプッシュする。 - Nothing
push
が何もプッシュしないように設定。明示的にブランチを指定する必要があります。 - Current
現在のブランチだけをプッシュ。リモートに同じ名前のブランチがない場合はエラーとなります。 - Upstream
現在のブランチの上流ブランチに対してプッシュ。 - 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の手順をまとめておきます。
- ファイルを作成または変更します。
git add
コマンドを使って、変更したファイルをステージングエリアに追加します。git commit
コマンドを使って、変更をコミットします。git push
コマンドを使って、コミットをリモートリポジトリにpushします。
ここまでの内容を確認して、git pushの基本操作とそのオプションを理解し、日々の開発作業に活用してください。