web-dev-qa-db-ja.com

さまざまなコミットに対して-iをgitrebaseする方法は?

リベースを使用して、ローカル機能/トピックブランチのコミットの範囲を潰すことができますか含まれていません最新のコミット?これは、それらがマージされてパブリックリポジトリにプッシュされる前に準備したいコミット用です。

私は迅速に作業し、タイトルと説明が不十分な小さな変更をたくさん加えました。これは、すばらしいコメントを付けて2つまたは3つの別々の論理コミットにまとめたいものです。 329aed9からaf39283の間で、この機能ブランチの短い履歴の任意の時点で発生する可能性のあるコミットの範囲を選択できますか?

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID

ありがとう!

25
Dylan Valade

いつでもgit checkout -b new_branch af39283で新しいブランチを作成し、それをリベースすることができます。ただし、将来のある時点で後のコミットを含めたい場合は、それらのリベースも回避できません。コミットのSHA1は、そのすべての祖先コミットに依存します。

11
Karl Bielefeldt

したがって、最新のコミットを「含めない」とはどういう意味かは完全には明確ではありませんが、rebase -i最後のコミットまで何もしなくても、前のコミットを押しつぶす/並べ替える/書き直す/修正する/削除することができます。もちろん、その下の履歴を書き換えているので、その差分が再適用され、リベース後に別のコミットオブジェクトになりますが、これを公開していないため(そして残りの部分を書き換えているため) )それはそれほど重要ではないはずです。

1
Matt Enright