3

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
4

1 に答える 1