1. ホーム
  2. git

[解決済み] git format-patchでコミットを1つのパッチにまとめるにはどうしたらいいですか?

2022-04-22 14:15:31

質問

あるブランチに8つのコミットがあり、それをまだgitに慣れていない人たちにメールで送りたいと思っています。 今のところ、何をやっても8つのパッチファイルが作成されるか、あるいはブランチの歴史上のすべてのコミットのパッチファイルが作成されるかのどちらかです。 git rebase --interactive を使ってコミットを潰しましたが、今は何をやっても最初から何十億ものパッチを与えてしまいます。 私は何を間違えているのでしょうか?

git format-patch master HEAD # yields zillions of patches, even though there's 
                             # only one commit since master

解決方法は?

以下のように、捨てブランチで行うことをお勧めします。 もしあなたのコミットが "newlines" ブランチにあり、すでに "master" ブランチに切り替えているのなら、これでうまくいくはずです。

[adam@mbp2600 example (master)]$ git checkout -b tmpsquash
Switched to a new branch "tmpsquash"

[adam@mbp2600 example (tmpsquash)]$ git merge --squash newlines
Updating 4d2de39..b6768b2
Fast forward
Squash commit -- not updating HEAD
 test.txt |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

[adam@mbp2600 example (tmpsquash)]$ git commit -a -m "My squashed commits"
[tmpsquash]: created 75b0a89: "My squashed commits"
 1 files changed, 2 insertions(+), 0 deletions(-)

[adam@mbp2600 example (tmpsquash)]$ git format-patch master
0001-My-squashed-commits.patch