質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

452閲覧

git masterブランチ以外のリモートブランチにローカルの変更をpushしたい。

Tatsurou

総合スコア81

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2019/03/08 03:03

やりたいこと

ローカルの変更をmasterブランチではなく、
branchBというリモートブランチにpushしたい(その後、プルリク)。

わからないこと

以下の方法であっているかどうか

方法01

masterにチェックアウト後、git pullしてmasterの最新を取り込み、
git checkout branchB で、branchBに切り替え
branchBで、ファイルなどを変更後、
git push origin branchA で、リモートのbranchAにpush
イメージ説明

方法02

branchAにチェックアウト後、git pullしてbranchAの最新を取り込み、
git checkout branchB で、branchBに切り替え
branchBで、ファイルなどを変更後、
git push origin branchA で、リモートのbranchAにpush
イメージ説明

おそらく 方法02であっているかと思うが不安

詳しい方、合っているかどうか教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

厳格に言うと、どちらも合っていません。
何故なら、localのbranchBをremoteのbranchAにpushという、名前が一致していないためです。「やりたいこと」というのが最初からGitの考え方に沿っていないという意味です。

localとremoteの関係は、pullやpushによって手動で同期される、完全なコピーである、と考えると良いです。remoteを任意の形にしたいなら、「localをその形になるように構成する」と考えてください。

今の情報では本当は何がしたかったのかが不明ですが、仮に「remoteのbranchAに特定の変更を積んで伸ばしたい」というだけなら、localにremoteのbranchAをpullして、コミットを積んでからpushするだけで終わりです。

投稿2019/03/08 03:12

編集2019/03/08 03:14
tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tatsurou

2019/03/08 03:19

ご回答いただきありがとうございます。 > localにremoteのbranchAをpullして、コミットを積んでからpushするだけで終わりです。 つまり、ブランチを作るという事がおかしいという事でしょうか? プルリクを出したいので、どうしてもブランチを作りたいんですね。
tamoto

2019/03/08 03:38

「どこから」「どこに」マージするプルリクを出すのですか?それでは言葉が全く足りていないです。 例として、「`branchA`の先端から小さく伸ばした`branchB`を作り、それを`branchA`にマージするプルリクを出したい」というなら、まさに今書いた通りの操作をすれば良いだけです。
Tatsurou

2019/03/08 04:02

ローカルのbranchB(どこから)、リモートのbranchA(どこに)にマージのためのプルリクを出したいです。 操作としては、 git add . git commit -m "hoge" git push origin branchB で良いという事ですか? このoriginは、maste branchrではなく、branchAを指しているで合っていますか?
tamoto

2019/03/08 04:15

originは`remote`のことです。リポジトリそのものを指しています。 回答にも書きましたが、pushはlocalの構造をremoteに「同期」するものです。 操作の前に、まず、ローカルの`branchB`が「どこから生えているべきなのか」を明確にしましょう。質問の「方法01」と「方法02」ではプルリクの結果が全く異なってしまいます。 「何がしたいのか」がまだ曖昧なので、そこを決めないと正しい操作を提案することができません。
Tatsurou

2019/03/08 04:33

「方法02です。 まず、branchAに移った後、pullして branch Bを作り、branchBに移動し ファイルを変更。 その後、branchAに変更を取り込みたい。 あ、つまり、branchBでただ、単にpushして、 プルリクは、githubで単にプルリクを出せば良いって事ですね。
tamoto

2019/03/08 04:40

それで合ってます。 localで`branchB`を作ったら、remoteに`branchB`を複製する(pushがまさにその操作)、そして「(remoteの)`branchB`を(remoteの)`branchA`にマージするプルリクを起こす」で目的を達成できます。
Tatsurou

2019/03/08 04:44

ご丁寧にありがとうございます!!理解できました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問