2013-06-19 14 views
15

マスターには新機能があり、フィーチャー1(マスターから分岐)は安定したマスターです。どのようにして「場所を交換する」ように物を交換することができますか?つまりfeature1はマスターになり、マスターはnewfeaturebranchになりますか?マスターとフィーチャーブランチの交換

私はいくつかのよく似た質問を見つけましたが、そのような場合には、もはや古いマスターコミットについて気にしませんでした。ここでは、現在のマスターを新しいnewfeaturebranchとして保存したいと考えています。私はこれを行うための一つの方法を考えてきました

  1. は、現在のマスターからnewfeaturebranchを作成します。
  2. 元に戻す/削除するコミットをマスターに戻すフィーチャー1の分岐点。
  3. マージ特徴1マスター
  4. ブランチの削除特集1

答えて

20

masterは非常に最初にあった場所である)tmpからnewfeaturebranchを再作成:

あなたは使用しないでください
git branch -m master newfeaturebranch 
git branch -m feature1 master 
+0

興味深い。そして、私はこれらをリモート(Github)にプッシュすることができ、それは単に機能するでしょうか? – Dogweather

+0

新しいマスタが古いマスタの* ahead *であるため、Gitは文句を言いません(早送りできない場合にのみ文句を言います)。同様に、 'newfeaturebranch'はリモートにはまだ存在しないまったく新しいブランチ名なので、これもうまくいくはずです。コミットが「削除」されているブランチを更新したいときだけ、 'git push -f'を使って強制的にpush *する必要があります。 – poke

+0

ありがとう、これは素晴らしい仕事。古いブランチも両方とも同時にコミットしていたので、力が必要でした。しかし、その操作は予期されることです。私はまた、何かが間違っていた場合に備えて、それぞれのオリジナルの "アーカイブ"ブランチを作成しました。 – Dogweather

0

編集:この投稿は、単に「取引場所」にしたいと言っていたときに、質問を編集する前に書かれています。 名前を保持する必要がない場合は、Pokeの解決策で十分です。


あなただけのプログラミングで変数を交換するように、第三のブランチtmpが必要になります。

  • git checkout -b tmp mastermaster
  • git branch -D masterから作成された新しいtmpブランチのスイッチを:ブランチmaster
  • git checkout -b master feature1を削除します。 masterからfeature1
  • git branch -D feature1:ブランチfeature1
  • git checkout -b feature1 tmpを削除します。あなたは枝の名前を変更することができます
+1

あなたが明示的にそれを必要としないなら、大文字の '-D'フラグ。 '-d'で十分です。 – poke

+1

名前を保持したい場合、彼は単に 'newfeaturebranch'の名前を' feature1'に変更することができるので、Pokeの解決策は無条件で「十分」です。 – Angstrom