1. ホーム
  2. ギット

[解決済み】ブランチを指定せずにgit pushした場合のデフォルトの動作

2022-03-18 02:07:56

質問

以下のコマンドでリモートブランチにプッシュしています。

git push origin sandbox

もし私が

git push origin

それとも、現在のブランチだけを更新するのでしょうか? 私は3つのブランチを持っています。 master , productionsandbox .

git push のドキュメントでは、この点についてあまり明確になっていませんので、いい加減はっきりさせたいと思います。

どのブランチとリモートが以下を行うか git push コマンドは正確に更新しますか?

git push 
git push origin

origin 上記はリモートです。

と理解しています。 git push [remote] [branch] は、そのブランチのみをリモートにプッシュします。

解決方法は?

git config で push.default を設定することで、デフォルトの挙動を制御することができます。以下より git-config(1) ドキュメント :

push.default

コマンドラインで refspec が指定されていない場合、リモートで refspec が設定されていない場合、そしてコマンドラインで指定したオプションのいずれによっても refspec が暗示されていない場合に、git push がとるべき動作を定義します。指定できる値は次のとおりです。

  • nothing : 何も押さない

  • matching : (Git 2.0 以前のデフォルト) 一致するすべてのブランチをプッシュする

    両端に同じ名前を持つすべてのブランチが一致するとみなされます。

  • upstream : 現在のブランチをその上流側のブランチにプッシュします ( tracking は非推奨のシノニムです)

  • current : 現在のブランチを同名のブランチにプッシュします。

  • simple : (Git 1.7.11 の新機能、Git 2.0 以降はデフォルト) 上流と同様、上流ブランチの名前がローカルと異なる場合はプッシュを拒否します。

    これは最も安全なオプションで、初心者に適しています。

<ブロッククオート

シンプルモード、カレントモード、アップストリームモードは、他のブランチがまだプッシュできる状態でなくても、作業を終えてから一つのブランチをプッシュしたい人のためのものです。

コマンドラインの例です。

現在の設定を表示する場合。

git config --global push.default

新しいコンフィギュレーションを設定する。

git config --global push.default current