編集:、1.0
最初のバージョンに修正プログラムをマージするのは、あなたのオリジナルの絵を言い換えてみましょう:
ゴールタギング勧告を追加します。更新は 編集2以下のコメントで与えられた追加の情報を一致させます。
A---B---C---D // master
\
E---F---G // hotfix
私はバージョン1
git checkout -b release/v1 <B's commit SHA>
を追跡し、実際に出荷されたものをマークするタグを作成するためにブランチを作成することはお勧めしたい、これは歴史が現在
C---D // master (2.0)
/
A---B // current version 1.0
\
E---F---G // hotfix
をどのように見えるかであると仮定すると、
git tag v1.0.0
次に、この新しいブランチ
git merge hotfix
に修正プログラムをマージし、新しいバージョンをマークするタグを作成して、それが必要なの今までどこにそれを解放
git tag v1.0.1
あなたの歴史は今、この
のようになります。
C---D // master (2.0)
/
A---B // tag v1.0.0
\
E---F---G // branch release/v1 and tag v1.0.1
最後に、バージョン2.0での修正プログラムの変更は必要ありませんが、実行する場合は次のようになります。
git checkout master
git merge hotfix
オリジナル答え
それはマスターにhotfixブランチを「マージ」とあなたが望むように見て歴史を取得することはできません。ただし、マスターブランチを書き直す場合は可能です。 警告:これにより、他の誰かがmasterブランチから作業しているときに大きな苦痛があり、should be avoidedが発生します。
A---B---C---D // master
\
E---F---G // hotfix
を考えると
あなたは、これは `あなたは` ABCD-Eの結果を得ることができrebase`にgitを使用して
A---B---E---F---G---C'---D' // master
\
C---D // original master
になります
所望の歴史を得ることができます'-F'-G'' しかし、 'D'と' G'の間に「どこかで」競合がある場合は、それらを解決する必要があります。並べ替え( 'C-D'の前に' E-F-G'を置く)は問題を解決しません。 – kolejnik
[GITの履歴を書き換えることの実際の結果は?](https://stackoverflow.com/a/1491022/211627) – JDB
@JDBはよく指摘されており、既に承知しています –