3

オープンソースのiOSフレームワークを備えたリポジトリがあります。現在、2つのブランチがあります:masterdevelop

masterフレームワークの現在のバージョンが含まれていますが、現在は廃止されています。develop「リリース」の準備ができている新しいバージョンが含まれています。

さて、develop公式バージョンで新しいバージョンを作りたいので、に移動したいと思いmasterます。develop通常、からへの単純なマージを使用しmasterます。ただし、APIの変更はかなりあるためdevelopmasterマージの競合がかなり発生します。

これらの競合に飛び込む前に、とを切り替えるだけのより良い方法があるかどうかを知りたいと思いmasterますdevelop。2つのバージョンはかなり異なるので、変更を適切に移動することは気にしません。下位互換性は実際には問題ではありません。切り替えることができれば問題ありません。

私は知っていgit branch -m <old> <new>ます:名前を変更 masterv1.4て(そして新しいものから新しいものを作成developする)できますが、これが進むべき道かどうかはわかりません。ローカルでは正常に動作しますが、Githubにプッシュすると、これがダウンストリームユーザーにどのように影響するかわかりません。masterdevelopmaster

それで、git branch -m大丈夫ですか、それとも私はマージ弾丸を噛むべきですか?または他の方法はありますか?

4

2 に答える 2

1

それらの名前を変更するか、各ブランチを更新して他のブランチの内容を含めることができます。2つのアクションの唯一の違いは、reflogに何が起こるかです。あなたが気にしないと仮定すると、そうです、あなたは一方の名前をもう一方の名前に変更することができます。git resetまたは、チェックアウトされたブランチ、またはを変更するために使用できます。git update-refこれは、基本的には下の機械git branch -mです。

最も簡単なアプローチは、おそらくを使用することgit branch -mです。

于 2012-12-16T09:24:40.210 に答える
1

はい、技術的には、git resetまたはを使用してブランチを任意のコミットに設定できますが、最初にブランチの意味git branch -mを考える必要があると思います。

あなたが説明することから、あなたはあなたのソフトウェアの異なるバージョンを持っています。現在マスターブランチによって追跡されている古いものと、開発ブランチによって現在追跡されている新しいもの。

したがって、誰かがあなたの古いバージョンを知っていて、それに取り組みたい場合、彼はあなたのマスターブランチをチェックアウトし、古いバージョンが含まれていることを期待します。マスター開発ブランチに設定しただけの場合(マージまたはリセットに関係なく)、古いバージョンを取得することを期待している人をかなり苛立たせます。

ブランチポインタを完全に異なるコミットに移動することを考えた場合、それは通常、適切なブランチの概念がないことを意味します。-マスターブランチをcurrent-stableのようなものと呼ぶ必要があるかもしれません。次に、新しい安定バージョンが利用可能になったら、それを新しいコミットにリセットするのが理にかなっています。

しかし、それはすべてあなたが開発する方法に依存します。たぶん、安定したリリースごとに1つの開発ブランチと、新しいリリースの準備ができるたびにジャンプすると予想される1つの現在の安定したブランチがあるとよいでしょう。

于 2012-12-16T21:27:39.480 に答える