3

時間のコミットがあるとしましょう

* 7bd4815 (HEAD) four
* afe9410 third
* db064dd second
* 46ab932 first

コミットされていない変更はありません。私がやりたいのは、 , の後firstのすべてを非対話的に押しつぶすことです。に相当するものが欲しい

pick 46ab932 first
fixup db064dd second
fixup afe9410 third
fixup 7bd4815 four

ここでは例として 4 つのコミットを使用していますが、実際のコミット数は異なります。ただし、コミットのハッシュはわかっているので、それを使用したいと思います。

これを検索しても無駄でした (正しい用語を検索していない可能性があります)。多くの解決策が見つかりましたが、この正確な状況には決してなりませんでした。

4

1 に答える 1

2

この解決策は、任意に多数のコミットを結合またはリベースする私の解決策に似ています。基本的には、ソフト リセットを使用して、squash/fixup と同じ効果を実現し、その後にコミットします。

次の解決策では、最初のコミットのコミット sha を意味するために「最初」という用語を使用し (元のポスターの例に示されているように)、「4 番目」という用語を使用して、HEAD がある最後のコミット sha を意味します。

解決策 1: 修正によるソフト リセット

git reset --soft first
git commit --amend --no-edit

# Verify results
git diff fourth

解決策 2: 修正なしのソフト リセット

これには、修正する必要がないように、最初のコミットの親にリセットする必要があります。

git reset --soft first^
git commit -C first

# Verify results
git diff fourth

-Cオプションはgit commit、 のコミット メッセージを再利用しますfirst

ドキュメンテーション

于 2014-06-27T15:46:29.183 に答える