Magitでブランチのアップストリームを変更する


47

Magit(with P P)でブランチをプッシュし、ブランチにアップストリームがない場合、Magitはプッシュ先のブランチの名前を尋ねます。それは素晴らしいことです。

ただし、ブランチのアップストリームを設定すると、Magitはプッシュする場所を尋ねなくなります。これは通常便利ですが(毎回確認する必要はありません)、別のリモートブランチにブランチをプッシュするのが難しくなります。

現在のブランチに既にアップストリームがある場合でも、Magitに宛先ブランチについて再度質問させる方法はありますか?


使用事例

私はこのようなブランチを持っていることは非常に一般的です:

Local:    issue-30 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

そして、ローカルとリモートの両方のブランチをに変更したいと思いissue-30-and-34ます。Localブランチの名前を変更しただけの場合は、次のようにします。

Local:    issue-30-and-34 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

削除してもorigin/issue-30、実行P Pするissue-30-and-34 と単にorigin/issue-30

私がやっていることは次のことですが、単一のgitコマンドで行うことができるものについてはかなり遠回りに感じます:

  1. issue-30-and-34 (古いブランチの名前を変更する代わりに)という新しいブランチを作成します。
  2. のローカルおよびリモートの両方のバージョンを削除しissue-30
  3. プッシュissue-30-and-34(まだアップストリームがないため、Magitはどこにプッシュするかを尋ねます)。

私の代わりに@tarsiusで回答を受け入れることを検討してください(関連情報を見つけやすくするため)。
コンスタンティン

@Constantine完了。
マラバルバ

回答:


60

以降ではv2.1、あなたは使用してリモートまたはローカルブランチに現在のブランチの上流を変更することができますbu[REMOTE/]BRANCHRET。から始まりv2.4、アップストリームが既に設定されている場合buは、単に設定を解除します。uもう一度押して、新しい値を設定します。

で始まりv2.4、アップストリームが設定されていない場合は、を使用してプッシュ中にアップストリームを設定することもできますpu[REMOTE/]BRANCHRET。アップストリームとして使用するブランチを自動的に尋ねられます。アップストリームが設定さpuれると、アップストリームを変更させずにそのアップストリームにプッシュします。したがって、アップストリームを変更するには、前の段落で説明したアプローチを使用する必要があります。

以前v2.4は、プッシュするリモートブランチをを使用してアップストリームブランチとして設定することもできましたp-ueREMOTE/BRANCHRET。ただし、デフォルト--set-upstreamでは、プッシュポップアップでスイッチは使用できなくなりました。nilに設定すると、元に戻すことができます。これには2つの効果があります。次回の再起動後にスイッチが再び使用可能になり、前の段落で説明したアプローチが機能しなくなります。magit-push-current-set-remote-if-missing--set-upstream


2番目と3番目の段落で説明されている両方の機能を同時に使用できるようにする場合は、そのままにmagit-push-current-set-remote-if-missingしてinitファイルに追加します。

(magit-define-popup-switch 'magit-push-popup
  ?u "Set upstream" "--set-upstream")

11

P C-u C-u P」を押して、Magitがプッシュする前に使用するリモートおよびリモートブランチを尋ねます。

(1つのプレフィックス引数( " P C-u P")を使用すると、Magitはどのリモートを使用するかを尋ねます。)

これを見つけるにP C-h k Pは、Magitステータスバッファーを押して、magit-pushmagit-push-dwim(これらのドキュメントは古くなっているようです)のドキュメントを読んで、実験しました。

PS:Magitを使用していますmagit-1.2.0-2049-ge6839e8


5
この答えは少し時代遅れです。
シモン・ウィグナスキ

1

ブランチ/設定セクションの下にあるようです:

b C p pushRemoteを設定するには


デフォルト以外にリモートを指定する方法はありますか?
-scry

0

2016年11月および最新の時点でmagit、部分的な解決策があります。

P e-を押すことができますがelsewhere、記憶されていません

私はmagitの方法を見つけることができなかったので、--set-upstreamターミナルからこれをやっただけで、ちょっとしたチートですが、この問題を乗り越えました:

git push --set-upstream origin <branch-name>

そして今、新しいアップストリームが保存され、次のものを構築できます:)


1
「私は[...]への道を見つけることができません--set-upstreamおそらく、あなたが読んで試してみてください- 」メガネザルと答えた
npostavs

確かに、これが私がこれを理解するのを助けたものです。ちょうど、magitそれ以来少し変わっており、私の希望は私のソリューションが誰かをさらに数分節約すること
です-Josh.F

1
その回答の最初の段落では、アップストリームを変更する方法について説明し、最新のmagitで機能します。
-npostavs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.