1
4

1 に答える 1

5

私が正しく理解していれば、「押しつぶす」ことがあなたが望むものです。

  -A-B-C-D-E-F-G-H

上記の履歴を考えると、スカッシュする最初のコミットの前にコミットを選択する必要があります。F と E を D に、H を G に squash したい場合、最初のコミットの前のコミットは C です。

  git rebase -i C

次のようなテキスト ファイルがエディタに表示されます。

pick D
pick E
pick F
pick G
pick H

これを次のように変更します。

pick D
squash E
squash F
pick G
squash H

新しいコミットのコミット メッセージを確認するよう求められます。

結果の履歴は次のようになります。

  -A-B-C-D'-G'

常に新しいコミットを古いコミットに押しつぶしていることに注意してください。その逆ではありません。したがってpick G、 とsquash H. 履歴が移動した後にコミットを修正することと考えてください。

PS: これを GitHub リポジトリに入れるには、強制的にプッシュする必要がありますgit push -f origin(それoriginが GitHub リモートである場合)。

PPS: 詳細については、 git-rebase の man ページを参照してください。

于 2012-12-30T00:38:51.460 に答える