私のチームは、「topic1」と呼ぶgitの共有トピックブランチに取り組んでいます。私はtopic1で作られたブランチでいくつかのコードのリファクタリングに取り組んでいました。これを「リファクタリング」と呼びます。定期的にtopic1をリファクタリングにマージして変更を最新の状態に保つことができますが、リファクタリングがまだ進行中であるため、リファクタリングをtopic1にマージし直していません。
最近マスターから作成された「topic2」と呼ぶ別のトピックブランチがあります。私がやりたいのは、「リファクタリング」で行った変更のみを、「topic2_refactor」と呼ぶtopic2で作成された新しいブランチにマージすることです。(つまり、リファクタリングによってのみアクセス可能で、topic1によってはアクセスできないコミットの変更。)
私はこれらの変化だけを見る方法を知っています:
git log origin/refactor --not origin/topic1
だから私がやりたいのはこのようなものです-しかしこの構文は正しくありません:
git checkout topic2
git checkout -b topic2_refactor
そしてこれ:
git merge origin/refactor --not origin/topic1
またはこれ:
git cherry-pick origin/refactor --not origin/topic1
(上記は、後でリファクタリングブランチにマージされたマスターで発生したいくつかの変更のために、必要のないマージの競合を引き起こしているようです。)
これを実行し、後で「リファクタリング」ブランチの履歴で解決された不要なマージの競合を回避するためのクリーンな方法があることを期待していました。これは、git rebase、git filter-branchなどを使用して可能でしょうか?