別の名前の別のブランチへの Git プッシュ
-
git pushコマンドとその豊富なオプション セット -
refspecsパラメータを一度設定して何度も使用するためのgit pushのきちんとしたショートカット - Git で別のブランチにプッシュしたい場合
-
Git
Refspecs - 資力
git push には、Git の機能をフルに活用できる豊富なオプションがあります。 これらの 1つは、その source:destination refspecs パラメータです。
これらを使用して、選択した名前の特定のブランチに git push します。 最後に、ローカルと同じ名前のブランチではなく、新しいブランチを git push すると、ワークフローが大幅に向上するユースケースがいくつか見られます。
git push コマンドとその豊富なオプション セット
Git は、そのままの git push コマンドによるリモートへの単純なプッシュに制限しません。 代わりに、希望する結果を達成するためのいくつかの強力なオプションを提供します。
これらのうちの 2つは、[remote_repe] および [src:dst] refspecs パラメータです。
これらのパラメーターが、別のブランチへの git push にどのように役立つかを見てみましょう。
git push [remote_repo] [refspecs]
[remote_repo] は、ローカル システムのリモート リポジトリを指します。 ほとんどの場合、この名前は origin です。
[refspecs] は、特定のブランチへの git push に対する興味深いパラメーター キーです。 この投稿の最後にある refspecs で詳しく説明します。
src:dst という形式を持ちます。ここで、src は、プッシュするローカル ブランチを指します。 dst は、プッシュ先のリモート ブランチへの参照 (または名前) です。
デフォルトでは src パラメータと同じ名前ですが、dst 値を明示的に指定することで、特定のブランチへの git push を選択できます。
最初にローカル リポジトリをセットアップし、それをリモート リポジトリにリンクします。 次に、ローカル リポジトリに新しいブランチも作成します。


リモート リポジトリには、ローカルに存在する feature_branch がありません。
feature_branch を新しい名前の別のブランチにプッシュします。
git push origin feature_branch:teamX_featureY

feature_branch がリモートの別の名前で新しいブランチにプッシュされていることがわかります。

プッシュするたびにこれらの引数を渡す必要があることに注意してください。 それ以外の場合、dst パラメータはデフォルトでローカル リポジトリのブランチの名前になります。 ただし、Git は、これらを繰り返し入力する手間を省くためのきちんとしたショートカットを提供してくれます。
refspecs パラメータを一度設定して何度も使用するための git push のきちんとしたショートカット
Git では、ブランチのアップストリーム名は、常にプッシュ先のブランチです。 この値は、次のコマンドで設定できます。
git branch --set-upstream-to <remote_branch>
ただし、-u フラグを渡すだけで、git push でこのコマンドを実行することもできます。
git push -u origin local:different_remote
これを行うと、次にプッシュするときに、ローカル ブランチが different_remote ブランチにプッシュされます。 したがって、毎回明示的に名前を付ける必要はありません。

この新しいアップストリーム ブランチは、リモート リポジトリにも表示されます。

次のコマンドを使用して、config ファイルの push.default 値を変更する必要があります。
git config push.default upstream
dst パラメーターに言及せずに second_feature をプッシュすると、Git は自動的にそれを different_remote にプッシュします。
git push origin second_feature

Git で別のブランチにプッシュしたい場合
新しいブランチを git push したい場合のいくつかのユースケースは次のとおりです。
-
クールな機能またはモジュールを開発し、それを複数のプロジェクトにプッシュしたいとします。 自分でデザインしたハロウィーンをテーマにしたメニューのような単純な一般的な機能でさえ気に入って、多くのアプリでそれを使いたくなるでしょう。
別の名前で各プロジェクトにプッシュする必要があります。
-
中央 (リモート) リポジトリとローカル セットアップの命名スキームが一致しない場合があります。 これは、大規模なチームが関与する複数のプロジェクトに取り組んでいる場合に特に当てはまります。
そのような場合、
refspecsオプションを指定したgit pushコマンドを使用すると、手間が省けます。
最後に、サインオフする前に、refspecs をさらに掘り下げてみましょう。
Git Refspecs
Git は、リポジトリ内のすべてのオブジェクトへの参照を内部的に保存します。 これにより、暗号化された SHA ハッシュを常に使用しなくても、さまざまな Git オブジェクトにすばやく簡単にアクセスできます。
Git では、これらのリファレンスを refspecs と呼んでいます (しゃれを意図したものです)。
これらの refspecs は、リポジトリ内の特別なディレクトリに保存されます。
-
refs/headsディレクトリには、オブジェクトへの参照がローカル リポジトリに保存されます。
-
refs/remotesには、リモート リポジトリの Git オブジェクトへの参照があります。
資力
- https://www.freecodecamp.org/news/git-push-to-remote-branch-how-to-push-a-local-branch-to-origin/
- https://github.com/jiffyclub/blog-posts/commit/4bf63cdafc9a3eb9602646ced972913ef73386bd
- https://davidwalsh.name/git-push-different-name
- https://stackoverflow.com/questions/36139275/git-pushing-to-remote-branch
- https://git-scm.com/docs/git-push