私は3つの変更を加えたmasterからブランチを持っていて、それをmasterに再度rebaseしたい。例:早送りが利用可能なときにGit rebase対話型の非圧縮が発生する
$git checkout master
$git branch dev && git checkout dev
$<do 3 commits>
$git checkout master
$git rebase dev -i
通常、-iは3つのコミットを与え、私にスカッシュを許可します。しかしこの場合、それはちょうど "noop"であり、rebaseが完了すると、3つのコミットがマスターに移動したことがわかります。私はここにいると思うが、祖先が発散していないので、早送りが可能であったため、これが起こった。しかし、私はコミットを潰したい。
--no-ffを使ってみましたが、私の元のケースとまったく同じです(noop + no squashing)。
(DEVブランチ上ながら)私も
$git rebase -i HEAD~3
$git checkout master
$git rebase dev
をやってみました。しかし、これは本当に苦痛だと私はHEAD〜X部分のために潰すためにどのように多くのコミット知っている必要があります。
脚注: これは私にとって重要な理由は、この縮小されたチェンジセットがgerritでレビューされることです。別々の場合は、レビューが不可能になります。
ここでのキーは、特定の名前付きコミットではなく、実際にはリベースのベースとして 'master'を使用しています。マスターがあまりにも遠く離れていても、スカッシュする可能性のあるものはそれ以来存在することが分かります。 (また、 'merge --squash'はまだ自動コミットしていませんか?) – Cascabel
@Jefromi:私が最近使用したgitのすべてのバージョンで、' git merge --squash'は変更を単にステージングします。それは事実ではありませんでしたか? –
'git merge --squash'(7d0c68871a8)を導入したコミットで追加されたドキュメントには、「実際にコミットしない」と書かれています。 –