branch の機能に取り組んでいるとしますoldFeature
。私はコミットA
をB1
行い、コードレビューのために送信しました。で、B1
いくつかの既存のファイルを変更しましたが、newfile.txt
.
その間、 ( == )newFeature
から分岐したブランチで作業を開始しました。、、を追加しました。oldFeature
HEAD
B1
C
D
E
その間、コード レビューの結果が得られ、既存のファイルの一部を修正B1
、変更、および変更する必要がありました。newfile.txt
修正後、になりましB2
た。
それを説明するために:
newFeature oldFeature
A A
B1 B2 [B1 with some fixes]
C
D
E
今私は入っていて、の代わりに持つようnewFeature
にリベースしたいと思っています。単純にリベースを実行すると、リベースの両方の部分に追加されるため、リベースの競合が発生します。newFeature
B2
B1
newfile.txt
oldFeature
( )からのバージョンを保持したいB2
。
に依存しているB1
ためHEAD
、C
に移動できません。D
E
次の回避策を実行できることを知っています。
git checkout --theirs
git add
- リベースを続ける
次に、次のような状況になります。
newFeature oldFeature
A A
B2 B2
BX
C
D
E
whereは、 に存在していたファイルのBX
多かれ少なかれです。これで、インタラクティブなリベースと削除を行うことができます。B2\B1
A
BX
ただし、私の回避策は複雑です。それを行う簡単な方法はありますか?簡単に言えば、私はどちらかを持っているということです
newFeature oldFeature
A A
B2 B2
B2\B1
C
D
E
リベースの競合なしで、そのコミットを取り除くB2\B1
か、それらを自動的に置き換えることができるので、
newFeature oldFeature
A A
B2 B2
C
D
E
Git 1.8.0 を使用しています。