「git push」コマンドのデフォルト挙動 (ブランチを指定しない場合)
日本語:
「git push」コマンドは、通常、現在のブランチをリモートリポジトリの対応するブランチにプッシュします。つまり、ブランチを指定せずに「git push」を実行した場合、現在のブランチ名と同じ名前のリモートブランチにローカルの変更をプッシュします。
例:
- ローカルブランチ:
main
- リモートブランチ:
origin/main
この場合、git push
を実行すると、ローカルのmain
ブランチの変更がリモートリポジトリのorigin/main
ブランチにプッシュされます。
注意:
- リモートブランチが存在しない場合: リモートリポジトリに指定されたブランチが存在しない場合、
git push
は新しいブランチを作成してプッシュします。 - トラッキングブランチ: ローカルブランチがリモートブランチとトラッキングしている場合、
git push
は自動的にトラッキングしているリモートブランチにプッシュします。 - プッシュポリシー: リモートリポジトリのプッシュポリシーによって、プッシュが拒否される場合があります。
「git push」のデフォルト動作: 例
例1: 新しいブランチをプッシュする
# ローカルで新しいブランチを作成
git checkout -b new-feature
# 変更を加える
# リモートにプッシュ
git push
この例では、new-feature
という新しいブランチを作成し、変更を加えた後にgit push
を実行します。リモートリポジトリにnew-feature
というブランチが存在しない場合、新しいブランチが作成され、ローカルの変更がプッシュされます。
例2: トラッキングブランチにプッシュする
# ローカルでトラッキングブランチを作成
git checkout -b my-feature origin/feature-branch
# 変更を加える
# リモートにプッシュ
git push
この例では、origin/feature-branch
というリモートブランチをトラッキングするローカルブランチmy-feature
を作成します。git push
を実行すると、ローカルの変更が自動的にorigin/feature-branch
にプッシュされます。
例3: プッシュポリシーによる拒否
# ローカルで変更を加える
# リモートにプッシュ
git push
リモートリポジトリにプッシュポリシーが設定されている場合、特定の条件を満たさないプッシュが拒否されることがあります。例えば、フォースプッシュが禁止されている場合、git push -f
を実行すると拒否されます。
ブランチを指定してプッシュする
git push origin <branch-name>
この方法を使用すると、特定のブランチをリモートリポジトリにプッシュすることができます。例えば、main
ブランチをプッシュする場合は、以下のようにします。
git push origin main
複数のブランチをプッシュする
git push origin <branch-name> <branch-name> ...
この方法を使用すると、複数のブランチを同時にプッシュすることができます。例えば、main
とfeature-branch
をプッシュする場合は、以下のようにします。
git push origin main feature-branch
git push origin --all
この方法を使用すると、ローカルリポジトリの全てのブランチをリモートリポジトリにプッシュすることができます。
git push
トラッキングブランチは、ローカルブランチがリモートブランチと関連付けられている場合に自動的にプッシュされます。トラッキングブランチを作成するには、以下のようにします。
git checkout -b <local-branch> <remote-branch>
フォースプッシュする
git push -f origin <branch-name>
フォースプッシュは、リモートリポジトリの履歴を書き換えるため、慎重に使用してください。フォースプッシュを使用すると、他の開発者の作業が上書きされる可能性があります。
git branch git-branch