1. ホーム
  2. git

[解決済み] Git/Git Extension の "squash" と "fixup" の違いは何ですか?

2022-05-10 11:23:11

質問

私はこれまで Git エクステンション をしばらく使っていますが(最高です!)、次のような簡単な答えは見つかっていません。

時々、コミットメッセージを入力するときに、タイプミスをすることがあります。私の友人は、次の方法でそれを修正する方法を教えてくれました (Git Extentions で)。

コミット上で右クリック > 詳細設定 > コミットを修正する

そして、単に "Amend" にチェックを入れてメッセージを書き直すと、ほら! 私のコミットメッセージは修正されました。

しかし、この他のオプション "Squash commit" は...。これは何をするものなのでしょうか?

私の質問です。

誰かが私に説明するだろう正確な違いは何です スクワッシュコミット そして 修正コミット Git/Gitエクステンション ? 見た目はちょっと... "類似"。 に見えます。

どのように解決するのですか?

Git Extensions が具体的にどのようなことを行っているのかはわかりませんが git rebase には、squash! や fixup! というプレフィックスをつけたコミットを自動的に潰す、あるいは修正するためのオプションがあります。

   --autosquash, --no-autosquash
       When the commit log message begins with "squash! ..." (or "fixup!
       ..."), and there is a commit whose title begins with the same ...,
       automatically modify the todo list of rebase -i so that the commit
       marked for squashing comes right after the commit to be modified,
       and change the action of the moved commit from pick to squash (or
       fixup).

スクワッシュとフィックスアップの違いは、リベースの際に squash を実行すると、元のコミットとスクワッシュのコミットのメッセージを結合するよう促されるのに対し fixup 操作では元のメッセージを残し、fixupコミットからのメッセージを破棄します。