3

ブランチで複数のコミットから git パッチを作成しようとしています。ただし、任意のコミットから作成する必要があります (必ずしも範囲内にあるとは限りません)。パッチを作成したいコミットの間に、いくつかのコミットが変更され、パッチ内のいくつかのファイルも変更されている可能性があります。

これが私のユースケースです(より大きな数=後のコミット日を想定):

develop HEAD
Commit 5 - Changed a.txt
Commit 4 - Changed a.txt, b.txt, c.txt
Commit 3 - Changed b.txt, c.txt
Commit 2 - Changed a.txt
Commit 1 - Changed a.txt, b.txt, c.txt, d.txt
master HEAD

今、開発ブランチからコミット 1、3、および 5 のパッチを作成し、それらをマスター ブランチに適用できるようにしたいと考えています。

私は周りを見回しましたが、範囲内でパッチを作成する機能しか見つかりませんでした。それらの間のファイルに潜在的な変更がある複数のコミット用のパッチを作成する方法はありますか?

4

1 に答える 1

6

HEAD から新しいブランチを作成しますmaster

git checkout master
git checkout -b newBranch

ここでコミットを選択します。

git cherry-pick commit1SHA
git cherry-pick commit3SHA
git cherry-pick commit5SHA

ここからパッチを作成します。

git format-patch master --stdout > nameOfPatch.patch

ここで、コミット 1、3、5 を開発からマスターに移動したいと考えています。上記のステートメントを最後のチェリーピックまでたどってから、次のようにすることで簡単にこれを行うことができます。

git rebase -i HEAD~3

ここで、最初のコミットを選択し、残りの 2 つをスカッシュします。これで、他の 3 つのコミットすべてをカプセル化する 1 つの単独のコミットができました。さて、このコミットをチェリーピックして、マスターに言っsquashedCommitSHAてください。

git checkout master
git cherry-pick squashedCommitSHA
于 2015-07-30T20:14:26.637 に答える