別の名前の別のブランチへの 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