ローカルブランチを特定のリモートブランチにプッシュする方法を教えてください
$ git branch -vv
dev 4d46c96 [Origin/dev] Merge branch '1783' into dev
dev_3_feature 226b914 second commit in dev_3_feature
dev_second_feature 6b5f10f second commit in dev_2_feature
master baf5fc0 [Origin/master: ahead 1] master feature
* myFeature da5cc64 second commit in dev_1_feature
test 334cf7e commiting my super changes locally
1)DEV
機能をOrigin/dev
にプッシュし、ブランチとしてそこに残したいのですが、どうすればよいですか?
2)Origin/dev
の代わりにデフォルトでOrigin/master
にプッシュするようにローカルで何を/どこで/どのように設定する必要がありますか
更新:
したがって、通常はリモートで作業する場合、まず最初にリポジトリまたはブランチをプルする必要があります。
そのリポジトリなら
git pull Origin
その枝なら
git pull Origin <yourRemoteBranchName>
あなたがそれを引っ張った後、それはあなたのマシンになります。現在のブランチはyourRemoteBranchName
です。
これで、上記のリモートブランチが作成され、プルされたリモートブランチからローカルブランチを作成できます。現在のリモートブランチから新しいローカルブランチを作成します。
git checkout -b your_branch
リモートブランチは、リモートサーバーにプッシュすると自動的に作成されます。したがって、準備ができたと感じたら、次のようにすることができます。
git Push <remote-name> <branch-name>
ここで、<remote-name>
は通常Origin
で、これはgitがクローン元のリモートに付けた名前です。その後、同僚はそのブランチをプルするだけで、ローカルに自動的に作成されます。
ただし、形式は次のとおりです。
git Push <remote-name> <local-branch-name>:<remote-branch-name>
ただし、1つを省略すると、両方のブランチ名が同じであると見なされます。これを言っても、注意の言葉として、:<remote-branch-name>
(コロン付き)のみを指定するという重大な誤りを犯さないでください。リモートブランチは削除されます!
後続のgit pull
が何をすべきかがわかるように、代わりに次のように使用することができます。
git Push -u <remote-name> <local-branch-name>
以下で説明するように、-u
オプションは上流ブランチをセットアップします。
最新の、または正常にプッシュされたすべてのブランチについて、引数なしのgit-pull(1)およびその他のコマンドで使用される上流(追跡)参照を追加します。
上流のブランチと直接マージしたい場合は、
git merge branchName
このドキュメントを参照できます: https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging 。かなり良い例があります。
ローカルでdevブランチに切り替えてから、Originリモートのdevブランチにプッシュします。
git checkout dev
git Push -u Origin dev
-u
のgit Push
オプションは、開発ブランチにいるときにgit Push
とgit pull
がgit Push Origin dev
とgit pull Origin dev
と同じことを自動的に実行するように上流の追跡を設定します。
あなたの質問を誤解していて、「dev ...」を含むすべてのブランチをOriginのそれぞれのブランチにプッシュしたい場合は、それらのブランチごとに上記の手順を実行するか、git Push Origin --all
をプッシュしてプッシュall Originリモートへのブランチ。したがって、Originでは、Origin/dev
、Origin/dev_3_feature
などになります。
私があなたの質問を二重に誤解していて、「dev ...」を使用してすべてのブランチを単一のリモートブランチにプッシュしたい場合は、そうしないことをお勧めします。すべての開発ブランチを1つのブランチにマージ/リベースし、それをOriginにプッシュするのがおそらく最善です。 dev
という1つのブランチを使用するとします。
git checkout dev
git merge dev_3_feature
git merge dev_second_feature
git Push -u Origin dev
マージのたびに、マージの競合を解決する必要がある場合があるため、警告が表示されます。
最後の注意として、dev_second_feature
のような名前は機能が何であるかを実際には知らないので、将来の機能ブランチのためにいくつかのよりわかりやすいブランチ名が必要になる場合があります。