1. ホーム
  2. git

[解決済み] ブランチをマスターと同期・更新させる方法は?

2022-03-17 15:51:08

質問

現在、gitに頭を悩ませています。以下のような場合、最適な解決策が思いつきません。

という2つのブランチがあります。 マスター という名前の モバイルデバイスサポート . mobiledevicesupport を継続的なブランチとして維持し、mobiledevicesupport が安定した時点で master ブランチにマージ/同期させたいと考えています。これは mobiledevicesupport の変更を master にマージするだけでなく、master の変更をすべて mobiledevicesupport に取り込み、そのブランチで作業を続け、機能を改善したり修正したりできるようにするものです。これは中央のリポジトリと複数の開発者のもとで動作する必要があります。

他の人が使っている似たようなワークフローの例や、このアイデアが愚かで他の選択肢を検討すべきかを教えてください。今のところ、ワークフローは健全に見えますが、どうすればこの方法でgitを動作させることができるのかわかりません。

ありがとうございます、すべてのヘルプは非常に感謝しています。

更新1: master を mobiledevicesupport に、mobiledevice support を master にマージした場合、両方のブランチ間でコミットが複製されますか? それとも git は賢いので、私が A ブランチから B ブランチに最新の変更を取り込み、B ブランチにマージコミット C を追加し、B ブランチから A ブランチに最新の変更を取り込み、A ブランチにマージコミット D を追加したと判断してくれるのでしょうか?

画像を貼ろうと思ったのですが、評判が悪いので、以下のイラストでお願いします。2つのブランチが継続的に稼働し、頻繁に両方向にマージが行われる。重要なのは、gitがコミットをどのように扱うか、マージ時にどちらかのブランチをもう一方のブランチからのコミットでいっぱいにするのか、それともそのままなのか、ということです。以前rebaseを使ったことがありますが、ブランチを終了させてすべてのコミットをmasterに入れるようです。これまで助けていただきありがとうございました。

master
A--B--C-----H--I--J--M--N
       \   /    \
mobile  \ /      \
D--E--F--G--------K--L

解決方法は?

はい、そうしてください

git checkout master
git pull
git checkout mobiledevicesupport
git merge master

mobiledevicesupport を master と同期させるため。

で、mobiledevicesupport を master に入れる準備ができたら、まず上記のように master でマージして、それから......。

git checkout master
git merge mobiledevicesupport
git push origin master

で終わりです。

ここで前提として、mobilexxx はトピックブランチで、まだメインブランチに移行する準備が整っていない作業を行っています。ですから、mobiledevicesupportが良い状態になったときにだけmasterにマージしてください。