複数のコミットをつぶすために、私はいつも使用しています:
git reset --soft HEAD~<number of commits to squash> && git commit
しかし、git拡張のような良いgitクライアントでこれを行う良い方法があるのだろうか?連続したコミットを選択してそれらを押しつぶすことができれば、それは素晴らしいことです。
GitExtensionsを使用すると、2つの方法でこれを簡単に達成できます。
最初のはまったく同じことを行いますが、GUIからは、スカッシュを監視するコミットの既存のコミットメッセージを使用したくない場合に適しています。 。
git reset --soft HEAD~<number of commits to squash>
GitExtensionsの履歴ブラウザーから、保持する最後のコミットを右クリックして、「ブランチをここにリセット」を選択します。次に、オプション'soft'を選択します。
git commit
次に、まだステージングされている変更をコミットします。
secondは 'rebase --interactive'です:
上記と同じコミットを右クリックして、「リベース」を選択します。ポップアップで、「インタラクティブ」チェックボックスをオンにします。
次に、エディターで、コミットアクションを 'squash'に設定します。実行する前に、インタラクティブなリベースに関する適切なドキュメントを読んでください。このソリューションは、つぶしているコミットのコミットメッセージから構築された適切なコミットメッセージを作成する場合に最適です。
(Windowsを使用していると仮定)
はい、私は TortoiseGit ができると信じています。 TortoiseSVNの以前のユーザーとして、お勧めします。コミットログを表示すると、次のことができます。
さらに、TortoiseGitを使用してコミットする場合、前のコミットを単純にamendするオプションがあるため、これを実行しながら実行できます。また、これを行うと、最後のコミットメッセージが取り込まれます(スクリーンショットでプライバシー上の理由から私はクリアしました)。
もちろん、あなたはすでにこれを知っていると確信していますが、すでにリモートにプッシュされたコミットを結合または修正しようとしないでください。そうしないと、次のプッシュが悲惨に失敗します。
追加のボーナスとして、エクスプローラーで作業コピーを閲覧するときにオーバーレイアイコンの利点が得られます。