質問: ### やりたいこと ローカルの変更をmasterブランチではなく、 branchBというリモートブランチにpushしたい(その後、プルリク)。 ### わからないこと 以下の方法であっているかどうか ### 方法01 masterにチェックアウト後、git pullしてmasterの最新を取り込み、 git checkout branchB で、branchBに切り替え branchBで、ファイルなどを変更後、 git push origin branchA で、リモートのbranchAにpush ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/7adf41b1ad69bb9a5edf1e94e4fa87ff.png) ### 方法02 branchAにチェックアウト後、git pullしてbranchAの最新を取り込み、 git checkout branchB で、branchBに切り替え branchBで、ファイルなどを変更後、 git push origin branchA で、リモートのbranchAにpush ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/67b174150b5c99755aa08a59a86fada4.png) ### おそらく 方法02であっているかと思うが不安 詳しい方、合っているかどうか教えていただけると幸いです。
回答: こんにちは。 厳格に言うと、どちらも合っていません。 何故なら、localの`branchB`をremoteの`branchA`にpushという、名前が一致していないためです。「やりたいこと」というのが最初からGitの考え方に沿っていないという意味です。 localとremoteの関係は、pullやpushによって手動で同期される、完全なコピーである、と考えると良いです。remoteを任意の形にしたいなら、「localをその形になるように構成する」と考えてください。 今の情報では本当は何がしたかったのかが不明ですが、仮に「remoteの`branchA`に特定の変更を積んで伸ばしたい」というだけなら、localにremoteの`branchA`をpullして、コミットを積んでからpushするだけで終わりです。