2

たとえば、コミット atHEADを commitに押しつぶしたい場合HEAD~4、それを実行できるオプションがあります。

  1. からのコミットをリセットHEADするHEAD~3
  2. 古い HEAD と同じ変更を加えた一時的なコミットを作成します (たとえば、temp)
  3. ステージングされた/ステージングされていない他の変更を隠す
  4. temp私たちの古いものでつぶすHEAD~4
  5. 隠した変更をポップする
  6. 古いコミット (HEAD~3HEAD) として再度コミットをビルドします。

同じことを行うための他のより高速で便利な方法はありますか?

4

1 に答える 1

2

autosquash@jthill が示唆したように、 git のオプションが存在します。

たとえば、私の場合、最初のケースを

$ git log --oneline --decorate
ddd4444 (HEAD, my-feature-branch) A fourth commit
ccc3333 A third commit
bbb2222 A second commit
aaa1111 A first commit
9999999 (master) Old stuff on master

スカッシュしたい最近の変更を次のように追加しHEAD~4 ます。

$ git add .
$ git commit --fixup aaa1111
[my-feature-branch eee5555] fixup! A first commit

したがって、私の履歴は次のようになります。

$ git log --oneline --decorate
eee5555 (HEAD, my-feature-branch) fixup! A first commit
ddd4444 A fourth commit
ccc3333 A third commit
bbb2222 A second commit
aaa1111 A first commit
9999999 (master) Old stuff on master

autosquashbyを使用してリベースすると、正しい場所$ git rebase --interactive --autosquash masterにコミットされたコミットが自動的に選択されます。--fixup

リベースとコミットメッセージの編集によるマージに続いて、コミットが正常にリベースされます!

魔法のように機能します!:)

ソース:思考ボット

于 2016-06-09T17:48:38.667 に答える