web-dev-qa-db-ja.com

Git拡張機能:Squashコミット?

複数のコミットをつぶすために、私はいつも使用しています:

git reset --soft HEAD~<number of commits to squash> && git commit

しかし、git拡張のような良いgitクライアントでこれを行う良い方法があるのだろうか?連続したコミットを選択してそれらを押しつぶすことができれば、それは素晴らしいことです。

18
Slaknation

GEで簡単に実行できます。

  1. スカッシュするコミットへの混合リセット
  2. 必要なファイルのステージングとコミット
  3. やった

つぶす方法: enter image description here

32
RussKie

Here is the slowed down version of the accepted answer:

これは受け入れられた答えの減速版です

12
user1682406

GitExtensionsを使用すると、2つの方法でこれを簡単に達成できます。

最初のはまったく同じことを行いますが、GUIからは、スカッシュを監視するコミットの既存のコミットメッセージを使用したくない場合に適しています。 。

 git reset --soft HEAD~<number of commits to squash>

GitExtensionsの履歴ブラウザーから、保持する最後のコミットを右クリックして、「ブランチをここにリセット」を選択します。次に、オプション'soft'を選択します。

 git commit

次に、まだステージングされている変更をコミットします。

secondは 'rebase --interactive'です:

上記と同じコミットを右クリックして、「リベース」を選択します。ポップアップで、「インタラクティブ」チェックボックスをオンにします。

次に、エディターで、コミットアクションを 'squash'に設定します。実行する前に、インタラクティブなリベースに関する適切なドキュメントを読んでください。このソリューションは、つぶしているコミットのコミットメッセージから構築された適切なコミットメッセージを作成する場合に最適です。

7
Philippe

(Windowsを使用していると仮定)

はい、私は TortoiseGit ができると信じています。 TortoiseSVNの以前のユーザーとして、お勧めします。コミットログを表示すると、次のことができます。

Combine multiple commits context menu

さらに、TortoiseGitを使用してコミットする場合、前のコミットを単純にamendするオプションがあるため、これを実行しながら実行できます。また、これを行うと、最後のコミットメッセージが取り込まれます(スクリーンショットでプライバシー上の理由から私はクリアしました)。

Amend last commit

もちろん、あなたはすでにこれを知っていると確信していますが、すでにリモートにプッシュされたコミットを結合または修正しようとしないでください。そうしないと、次のプッシュが悲惨に失敗します。

追加のボーナスとして、エクスプローラーで作業コピーを閲覧するときにオーバーレイアイコンの利点が得られます。

Explorer icons

4
BoffinbraiN