PhpStorm で Update Project 時に Merge するか Rebase するか

以下の説明は、PhpStorm に限らず、JetBrains の IDE なら同様のはずです。

PhpStorm で Git プロジェクトを扱っていると、リモートの変更を取得するために、Update Project ボタンを押しますよね。以下のように、Merge incoming changes into the current branchRebase the current branch on top of incoming changes のどちらかを選択しなければなりませんが、意味を知った上で選んでいますか?

Update Project

CLI から Git を使わず、IDE からのみ Git を操作していると、Rebase を知らない人もいるかもしれません。そういった初心者向けに説明します。

前提

コミットログが以下のような状態になっているとします。

ローカル master で一つコミット(一番上)したタイミングです。origin/master からはコミット一つ分進んでいます。

変更を Push する前に、Update Project したい。しかし実は、別の開発者が一つコミットをリモートに Push 済みだったとします。

Update Project 時に Merge ... を選んだ場合

Update Project 時に Merge ... を選んで OK を押しました。コミットツリーは以下のようになります。

Merge

別開発者が行ったリモートのコミットが最後にマージされ、マージコミットが作成されています。

Update Project 時に Rebase ... を選んだ場合

Update Project 時に Rebase ... を選んで OK を押しました。コミットツリーは以下のようになります。

Rebase

自分が最後に行ったコミットが一番後ろに付け足される形になりました。この時、マージコミットは作成されません。Rebase の方がコミットログがシンプルになることが分かると思います。

Merge と Rebase どちらを選ぶか?

コミットログのシンプルさが保たれるのは Rebase です。基本的に Rebase を選んでいいと思っています。

ただ、上記で説明した違いについては知っておくべきです。何か起こった時に対処するには、コミットログから過去を正確に知る必要があります。また、Git 自体の理解も重要です。全ての Git 操作を PhpStorm 上から行うことはできません。特にこの記事に書いてあることを知らなかった方は git rebase コマンドについて知らないことが多いかと思われます。よく使うことになるはずですので、是非調べてみてください。

Firefox 84

Firefox Desktop Browser 84 が12月15日にリリースされました。

Release notes

Firefox 84 release notes

Firefox 84 release notes for developers

Pickup for WebClass

Apple M1 チップ搭載マシン サポートの強化

ネイティブビルド版が配布され、対象マシンでのパフォーマンスがアップするようです。対象マシンで利用するには、ブラウザ再起動が必要とのこと。

Adobe Flash のサポートが次のバージョンで終了

Firefox 84 が Flash をサポートする最後のバージョンになります。

今後の Firefox のリリースについて

次回のリリースは2021年1月26日に予定されています。

Firefox Release Calendar

その他ブラウザのリリースはこちらにまとめています。

Microsoft Edge 87

Microsoft Edge Stable 87 が11月19日にリリースされました。

Release notes

https://docs.microsoft.com/ja-jp/deployedge/microsoft-edge-relnote-stable-channel#バージョン-87066441-11-月-19-日

Pickup for WebClass

WebClass の機能に関わる変更はありません

Others

Internet Explorer で互換性のないサイトを Microsoft Edge にリダイレクトされるように変更

Microsoft Edge 87 から、Internet Explorer で互換性のないサイトを開くと自動的に Microsoft Edge にリダイレクトされるようになりました。互換性のないサイト一覧を Microsoft 自身が管理しており、申請することで登録可能なようです。

今後の Edge のリリースについて

次回のリリースは来年の1月21日の週に予定されています。

その他ブラウザのリリースはこちらにまとめています。

Firefox 83

Firefox Desktop Browser 83 が11月17日にリリースされました。

Release notes

Firefox 83 release notes

Firefox 83 release notes for developers

Pickup for WebClass

Apple M1 チップ搭載マシンのサポート

Apple M1 プロセッサ搭載マシンに対応しました。

MathML の displaystyle 属性サポート

全ての MathML 要素で、displaystyle 属性がサポートされました。

今後の Firefox のリリースについて

次回のリリースは 12月15日に予定されています。

Firefox Release Calendar

その他ブラウザのリリースはこちらにまとめています。

MathML に関する話題を久しぶりに見ました。

Firefox 82

Firefox Desktop Browser 82 が10月20日にリリースされました。

Release notes

Firefox 82 release notes

Firefox 82 release notes for developers

いつのまにか Firefox Site Compatibility のページが消えてました。

Not found

https://twitter.com/FxSiteCompat/status/1314624406543634434

事情は分かりませんが、今までありがとうございました。

Pickup for WebClass

ビデオの Picture-In-Picture 機能の変更

コントロール UI の見た目が変わった他、Picture-In-Picture 開始ショートカットキーが追加 (Mac) されました。

ブラウザのパフォーマンス向上

ページロードと起動時間が早くなりました。

ネスト/再起的に呼び出される Document.execCommand() が動作しなくなった

Document.execCommand() 自体、廃止の方向のようですので、今後は使わない方がいいでしょう。WebClass でも使用している箇所がありましたので、実装方針を見直していきます。

今後の Firefox のリリースについて

Firefox Release Calendar

その他ブラウザのリリースはこちらにまとめています。