master にマージされた機能ブランチに変更を導入する方法を探しています。目標は、機能ブランチに関連するコミットのみを保持することです。
機能がすでにマスターにプッシュされた後、追加の研磨が必要になることがよくあります。その間に master に対して行われた変更は、機能と競合していません。つまり、機能ブランチに追加の作業を実装するときに、実際の master へのリベースが可能です。
以下の画像はその状況を示しています。
私がこれまでに使用したアプローチ:マスターにリベースし、機能をマスターにマージします
反対 -> 機能ブランチは現在、マスターからのパーツで汚染されています。
質問: この問題を解決するために実際に取っているアプローチは何ですか?
サンプルコード
以下のアプローチを説明するのに役立つのは、例からリポジトリ構造を作成するコードです。
# mkdir test
git init
touch master-change-file
git add master-change-file
git commit -m "initial commit"
echo 1 > master-change-file
git commit -a -m "master commit 1"
echo 2 > master-change-file
git commit -a -m "master commit 2"
git checkout -b feature
echo 3 > feature-change-file
git add feature-change-file
git commit -a -m "feature commit 1"
echo 4 > feature-change-file
git commit -a -m "feature commit 2"
echo 5 > feature-change-file
git commit -a -m "feature commit 3"
git checkout master
git merge --no-ff feature -m "Merge branch 'feature'"
git checkout feature
echo 6 > feature-change-file
git commit -a -m "feature commit 4"
echo 7 > feature-change-file
git commit -a -m "feature commit 5"
git checkout master
echo 8 > master-change-file
git commit -a -m "master commit 3"
echo 9 > master-change-file
git commit -a -m "master commit 3"
# gitk --all