リモート(中央)リポジトリに複数のブランチがあり、最初はリモートリポジトリの正確なコピーがローカルにあるとします。多くのブランチを含むリモートリポジトリを使用するにはどうすればいいですか?
これで、リモートリポジトリのブランチの1つで何かを変更したいと思います。リモートブランチのローカルコピーを変更してプッシュしようとしましたが、この場合、解決しにくいマージ競合が発生する可能性があります。だから、私は1つが次の操作を行う必要があることを推測する:
- は、リモートブランチ(支店
A
)のローカルコピー(分岐B
)のローカルコピー(分岐C
)を作成します。 - この「コピーのコピー」(ブランチ
C
)に変更を加えます。 - リモートブランチをもう一度引き出します(ブランチ
A
)。リモートリポジトリのローカルコピーを更新します(ブランチB
)。 - リモートリポジトリのブランチ(
B
)(ブランチA
、他の人が行った変更を含む)の(更新された)ローカルコピーにブランチC
をローカルにマージします。 - リモートリポジトリのローカルコピー(ブランチ
B
)(変更と他の変更を含む)をリモートブランチ(A
)にプッシュできます。
私の説明は混乱するかもしれないと思います。 A
にB
を押して、B
にC
をマージし、A
の新しい状態(基本的には、再びA
B
にコピー)を使用してB
を更新し、C
を変更し、B
へA
をコピーC
にB
をコピー:だから、私は別の言葉でそれを要約してみてください。
行く方法はありますか?
これは私には痛いほど複雑に聞こえます。リモートブランチを変更したいのであれば、引っ張ったり、変更したり、再度押すことを妨げているのは何ですか?提案されたワークフローが実際にマージ競合を回避し、マージ競合のような問題があると思いますか? –
私のワークフローの背景には、マージ競合が発生した場合、2つの競合するブランチがローカルにあり、それらをローカルにマージする必要があるということです。したがって、マージ競合を避けることではなく、マージ競合を予期し、それに対してより良い準備をすることです。おそらく問題は、私がローカルブランチとリモートブランチの間の競合を解決する方法を知らないことです。 – Roman
Gitでは、2つのローカルブランチの間に_always_をマージします。あなたがGitHubやBitbucketのプルリクエストのようなものを介してリモート上でマージを行うことについて話している場合を除きます。しかし、その場合でも、そこにマージする必要はありません。マージはいつでもローカルで行うことができます。 –